假设我有字符串:
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;
});
我该如何做到这一点?
答案 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());