C#正则表达式(替换)

时间:2011-02-23 12:42:50

标签: c# regex

假设我有字符串:

  

10,11,12,13,14,ABC,DEF,GHI,66

我希望运行一个正则表达式来反对它只返回0-9和“,”字符,基本上剥离了其他任何东西。

我看过Regex.Replace,但有些事情并不完全正确。我的代码如下:

Regex reg = new Regex(@"[0-9,]+");
string input = reg.Replace(input, delegate(Match m)
                {
                    return String.Empty;
                });

我该如何做到这一点?

4 个答案:

答案 0 :(得分:9)

你只想要^吗?

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

答案 1 :(得分:1)

匹配系列会给你更多控制吗?

使用\d+[^,]你可以获得一组数字吗?

然后,您可以遍历您的收藏并重新创建所需的字符串。

使用linq你可以做到以下几点:

var input = "10,11,12,13,14,ABC,DEF,GHI,66";
Regex re = new Regex(@"\d+[^,]");
input = (from Match m in re.Matches(input) select m.Value).Aggregate("", (acc, item) => acc + "," + item).TrimStart(',');

答案 2 :(得分:0)

我认为你可以在没有正则表达式的情况下通过分析集合[0123456789,]中的字符所需的内容来实现。

答案 3 :(得分:0)

这个怎么样:

var testString = "10,11,12,13,14,ABC,DEF,GHI,66";
var split = testString.Split(',');
var result = String.Join(",", split.Where(element => element.All(c => Char.IsDigit(c))).ToArray());