RegEx用于替换除数字之外的所有字符
本文关键字:字符 用于 替换 数字 RegEx | 更新日期: 2023-09-27 18:28:12
如果我有一个带数字的数据字符串。这种模式是不一致的。我想从字符串中提取所有数字,只提取一个定义为允许的字符。我认为RegEx可能是最简单的方法。你能提供一个正则表达式模式来做到这一点吗?因为我认为正则表达式是巫毒,只有正则表达式医学专家知道它是如何工作的
eg/
"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())
EDIT显然你还需要'N'
:
new String(s.Where(c => Char.IsDigit(c) || c == 'N').ToArray())
EDIT EDIT示例:
var data = Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
data = data.Select(s =>
new String(s.Where(c => Char.IsDigit || c == 'N').ToArray())
).ToArray();
这有点可怕——嵌套的lambda——所以为了清晰起见,最好使用正则表达式。
类似的东西怎么样
String s = "";
for ( int i = 0; i < myString.length; ){
if ( Char.IsDigit( myString, i ) ){ s += myString.Chars[i]; }
}