2011-01-25 3 views
48

Получаю «7+» или «5+» или «+5» из XML и хочу извлечь только число из строки с помощью Regex. Regex.Match функция напримерRegex, чтобы получить NUMBER только из String

 stringThatHaveCharacters = stringThatHaveCharacters.Trim(); 
     Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE"); 
     int number = Convert.ToInt32(m.Value); 
     return number; 

ответ

61

\d+

\d() представляет собой любую цифру, + для одного или более. Если вы хотите поймать отрицательные числа, вы также можете использовать -?\d+.

Обратите внимание, что, как строка, она должна быть представлена ​​в C#, как "\\d+" или @"\d+"

4

Либо [0-9] или \d должно быть достаточно, если вам нужно всего лишь одну цифру. Приложите +, если вам нужно больше.


1 Семантика немного отличается, как \d потенциально соответствует любым десятичных цифр в любом сценарии там, который использует десятичные цифры.

+0

пожалуйста, определить точное регулярное выражение для использования в функции Regex.Match .... Потому что им не хорошо в Regex (SYNTAX) –

+0

Для одной цифры вам не нужно регулярное выражение: 'char digit = s.First (Char.IsDigit);'. Я бы добавил это к моему ответу, но я не думаю, что это так. – Kobi

+0

@Kobi: Это все равно нуждается в явной итерации по строке. Большинство людей, предпочитающих использовать регулярное выражение, не захотят этого делать :-) – Joey

80

Ответы выше - это замечательно. Если вы нуждаетесь разбор всех чисел из строки, которые являются непоследовательными тем следующее может иметь некоторую помощь:

string input = "1-205-330-2342"; 
string result = Regex.Replace(input, @"[^\d]", ""); 
Console.WriteLine(result); // >> 12053302342 
+0

Мне подходит этот ответ - работает! – peterincumbria