我正在尝试从以下字符串中删除所有特殊字符:
abc // t?% ?? ttt ,. y Ä Ö Ü ä, ö !
使用正则表达式:
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
但是这个正则表达式也会移除Ä Ö Ü ä, ö
,但我想保留这些字符。
我只想删除像!@#$%^&,;:'....
答案 0 :(得分:7)
将\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 Ä Ö Ü ä ö
答案 1 :(得分:1)
Func<char, bool> filter = ch => char.IsLetterOrDigit(ch) ||
char.IsWhiteSpace(ch) ||
ch == '-';
var abc = new string(str.Where(filter).ToArray());