Jam*_*mes 43 .net c# regex asp.net
如何从C#中删除字符串中的非字母数字字符和松散空格?
我想保留az,AZ,0-9等等(甚至不是"空格").
"Hello there(hello#)".Replace(regex-i-want, "");
Run Code Online (Sandbox Code Playgroud)
应该给
"Hellotherehello"
Run Code Online (Sandbox Code Playgroud)
我试过"Hello there(hello#)".Replace(@"[^A-Za-z0-9 ]", "");但空间仍然存在.
Tim*_*ker 59
在你的正则表达式中,你已经排除了匹配的空格(你没有使用Regex.Replace()我完全忽略的......):
result = Regex.Replace("Hello there(hello#)", @"[^A-Za-z0-9]+", "");
Run Code Online (Sandbox Code Playgroud)
应该管用.+通过一次匹配多个连续的非字母数字字符而不是逐个匹配,使正则表达式更有效.
如果您还想保留非ASCII字母/数字,请使用以下正则表达式:
@"[^\p{L}\p{N}]+"
Run Code Online (Sandbox Code Playgroud)
离开了
BonjourmesélèvesGutenMorgenliebeSchüler
Run Code Online (Sandbox Code Playgroud)
代替
BonjourmeslvesGutenMorgenliebeSchler
Run Code Online (Sandbox Code Playgroud)
Dmi*_*nko 16
您可以使用Linq过滤掉所需的字符:
String source = "Hello there(hello#)";
// "Hellotherehello"
String result = new String(source
.Where(ch => Char.IsLetterOrDigit(ch))
.ToArray());
Run Code Online (Sandbox Code Playgroud)
要么
String result = String.Concat(source
.Where(ch => Char.IsLetterOrDigit(ch)));
Run Code Online (Sandbox Code Playgroud)
所以你不需要正则表达式.