正则表达式替换和分裂

时间:2015-12-23 19:39:03

标签: c# regex string replace

我只需要从字符串中提取数字,到目前为止我没有问题。

我使用了这段代码:

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

输出:“1111”。

那么..我如何用符号分隔这两个值?

示例:“11:11”。

(抱歉英语不好)

3 个答案:

答案 0 :(得分: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>());

答案 1 :(得分:1)

使用此正则表达式:[^\d]*(\d+).*?(\d+)将两个数字分组,然后替换为\1:\2

答案 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);