Как получить целое число и удалить всю строку в С#

Как удалить строки и получить только целые числа?

У меня есть строка (01 - ABCDEFG)

Мне нужно получить (01) только

Ответ 1

input = Regex.Replace(input, "[^0-9]+", string.Empty);

Ответ 2

Существует четыре разных способа сделать это (возможно, больше, но я выбрал их).

# 1: Regex из Bala R

string output = Regex.Replace(input, "[^0-9]+", string.Empty);

# 2: Regex from Donut и агент-j

string output = Regex.Match(input, @"\d+").Value;

# 3: Linq

string output = new string(input.ToCharArray().Where(c => char.IsDigit(c)).ToArray());

# 4: Подстрока, для этого для работы черточка должна находиться в строке между цифрами и текстом.

string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "");

С этими входами:

string input1 = "01 - ABCDEFG";
string input2 = "01 - ABCDEFG123";

Для 1 и 2 результаты будут следующими:

output1 = "01";
output2 = "01123";

Для 3 и 4 результаты будут следующими:

output1 = "01";
output2 = "01";

Если ожидаемый результат состоит в том, чтобы получить все цифры в строке, используйте # 1 или # 2, но если ожидаемый результат должен только получить цифры перед тире, используйте # 3 или # 4.

С строкой, такой же короткой, как и # 1 и # 2, примерно одинаковы по скорости, а также для # 3 и # 4, но если есть много итераций или строки в четыре раза больше или больше # 2 быстрее, чем # 1 и # 4 быстрее, чем # 3.

Примечание. Если круглые скобки включены в строки №4, необходимо изменить это, но это не сделает это намного медленнее:

string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "").Replace("(", "");

Ответ 3

попробуйте следующее:

Convert.ToInt32(string.Join(null, System.Text.RegularExpressions.Regex.Split(s, "[^\\d]")))

возвращает целочисленное значение 1.

Ответ 4

string snum = System.Text.RegularExpression.Regex.Match(s, "\d+").Value;
int num;
if (!int.TryParse(snum, out num))
  throw new Exception();

Ответ 5

Вы должны использовать регулярные выражения - они довольно эффективный способ сопоставить строки текста с определенными шаблонами, и это отличный сценарий для их использования.

Образец "\d+" будет соответствовать последовательности из 1 или более цифр. Простой метод, который использует этот шаблон для извлечения чисел all из строки, выглядит следующим образом:

public static List<int> ExtractInts(string input)
{
   return Regex.Matches(input, @"\d+")
      .Cast<Match>()
      .Select(x => Convert.ToInt32(x.Value))
      .ToList();
}

Итак, вы можете использовать его следующим образом:

List<int> result = ExtractInts("( 01 - ABCDEFG )");

Более подробную информацию о регулярных выражениях см. в этой странице (MSDN) или эту страницу (полезный "обманщик" ).

Ответ 6

Посмотрите это сообщение в блоге:  http://weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx

Простая программа, которая извлекает номер из строки с использованием регулярного выражения.

class Program
    {
    static void Main(string[] args)
    {
      Console.WriteLine(ExtractNumbers("( 01 - ABCDEFG )"));    // 01
      Console.ReadLine();
    }

    static string ExtractNumbers(string expr)
    {
        return string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, "[^\\d]"));
    }
}

Надеюсь, это поможет!

Ответ 7

Получить все числа из строки

string str = "01567438absdg34590";
            string result = "";

             result = Regex.Replace(str, @"[^\d]", "");

            Console.WriteLine(result);
            Console.Read();

Выход: 0156743834590

Ответ 8

Response.Write(Convert.ToDecimal(string.Join(null, System.Text.RegularExpressions.Regex.Split(TextBox1.Text, "[^\\d .]"))));

Это для чисел int и decimal.

Ответ 9

Попробуйте следующее:

string XYZ = string.Join(null, System.Text.RegularExpressions.Regex.Split("XYZ  77", "[^\d]"));

Ответ 10

Вы также можете использовать этот способ, чтобы получить соответствующий ответ.

string sentence = "10 cats, 20 dogs, 40 fish and 1 programmer";
 string[] digits= Regex.Split(sentence, @"\D+");
             foreach (string value in digits)
             {
                 int number;
                 if (int.TryParse(value, out number))
                 {
                     Debug.Log(value);
                 }
             }