2015-12-23 10 views
1

Мне нужно извлечь только цифры из строки, и до сих пор у меня не было проблем.Regex заменить и разделить

Я использовал этот код:

string test = "N.11 Test 11"; 
string example = Regex.Replace(test, @"[^\d]", ""); 

Выход: "1111".

Итак, как я могу отделить два значения символом?

Пример: "11:11".

(простите за плохой английский)

+1

Просто матч все последовательности цифр и присоединиться результирующий массив с ':'. –

ответ

3

простой подход не используется заменить бы что-то вроде этого.

string test = "N.11 Test 11"; 
var result = string.Join(":", Regex.Matches(test, @"\d+").OfType<Match>()); 

Обратите внимание, что его лучше использовать переменную Regex вместо того, чтобы использовать статические методы, как Regex.Matches. если вы хотите использовать один и тот же шаблон снова и снова, не слишком элегантно, чтобы создавать новое регулярное выражение каждый раз. так что это лучше.

public static Regex digits = new Regex(@"\d+"); 
//... 
var result = string.Join(":", digits.Matches(test).OfType<Match>()); 
+0

Perfect. большое спасибо – NoName

1

использовать это регулярное выражение: [^\d]*(\d+).*?(\d+) к группе два числа, а затем заменить в \1:\2

0
Try this:  

String test = "N.11 Test 11"; 

String example = test.replaceFirst("\\s", ":"); 
example = example.replaceAll("[^:\\d]", ""); 
System.out.println("The answer is " + example);