繁体   English   中英

RegEx用于替换除数字之外的所有字符

[英]RegEx for replacing all characters apart from numbers

如果我有一串带有数字的数据。 这种模式不一致。 我想从字符串中提取所有数字,只提取一个被定义为允许的字符。 我认为RegEx可能是最简单的方法。 你可以提供一个可以做到这一点的正则表达模式,因为我认为正则表达式是伏都教而只有正则表达式的医学人知道它是如何工作的

例如/

"Q1W2EE3R45T" = "12345"
"WWED456J" = "456"
"ABC123" = "123"
"N123" = "N123" //N is an allowed character

更新 :这是我的代码:

var data = Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
data = data.Select(x => Regex.Replace(x, "??????", String.Empty)).ToArray();
String numbersOnly = Regex.Replace(str, @"[^\d]", String.Empty);

使用Regex.Replace(string,string,string)静态方法。

样品

要允许N您可以将模式更改为[^\\dN] 如果您正在寻找n ,您可以应用RegexOptions.IgnoreCase或将类更改为[^\\dnN]

不需要使用正则表达式! 只需查看字符并询问每个字符是否为数字。

s.Where(Char.IsDigit)

或者如果你需要它作为一个字符串

new String(s.Where(Char.IsDigit).ToArray())

编辑显然你也需要'N'

new String(s.Where(c => Char.IsDigit(c) || c == 'N').ToArray())

编辑编辑示例:

var data = Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
data = data.Select(s => 
    new String(s.Where(c => Char.IsDigit || c == 'N').ToArray())
).ToArray();

这有点可怕 - 嵌套的lambdas - 所以你可能最好使用正则表达式来清晰。

怎么样的东西

String s = "";
for ( int i = 0; i < myString.length; ){
    if ( Char.IsDigit( myString, i ) ){ s += myString.Chars[i]; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM