如何从字符串中删除除字母数字字符之外的所有字符
本文关键字:数字字符 字符 字符串 删除 | 更新日期: 2023-09-27 18:32:57
我正在尝试从以下字符串中删除所有特殊字符:
abc // t?% ?? ttt ,. y Ä Ö Ü ä, ö !
使用正则表达式:
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
但是这个正则表达式也删除了Ä Ö Ü ä, ö
但我想保留这些字符。我只想删除以下字符: !@#$%^&,;:'....
将'p{L}
添加到否定的字符类中,而不是a-z
, A-Z
。 'p{L}
匹配来自任何语言的任何类型的字母。通过将其添加到否定字符类中,将匹配任何字符,但不匹配字母。
@"[^'p{L}0-9 -]"
演示
string str = "abc // t?% ?? ttt ,. y Ä Ö Ü ä, ö !";
string result = Regex.Replace(str, @"[^'p{L}0-9 -]", "");
Console.WriteLine(result);
Console.ReadLine();
输出:
abc t ttt y Ä Ö Ü ä ö
爱德酮
Func<char, bool> filter = ch => char.IsLetterOrDigit(ch) ||
char.IsWhiteSpace(ch) ||
ch == '-';
var abc = new string(str.Where(filter).ToArray());
小提琴:https://dotnetfiddle.net/MBRsPX