如何从字符串中删除除字母数字字符之外的所有字符

本文关键字:数字字符 字符 字符串 删除 | 更新日期: 2023-09-27 18:32:57

我正在尝试从以下字符串中删除所有特殊字符:

abc // t?% ?? ttt ,. y  Ä Ö Ü ä, ö !

使用正则表达式:

Regex rgx = new Regex("[^a-zA-Z0-9 -]");

但是这个正则表达式也删除了Ä Ö Ü ä, ö但我想保留这些字符。我只想删除以下字符: !@#$%^&,;:'....

如何从字符串中删除除字母数字字符之外的所有字符

'p{L}添加到否定的字符类中,而不是a-zA-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