从列表中的字符串中删除特殊字符

本文关键字:删除 特殊字符 字符串 列表 | 更新日期: 2023-09-27 18:27:20

我有一个

List<string> names = new List<string>{"asa","@!","~!@#$%^tryt","asas**)_+lk"};//just an example...will be populated at run time
List<string> unsupportedCharacters = new List<string> { "~", "!", "#", "$", "%", "^", "&", "*"};

现在,我想从"名称"列表中的每个字符串中删除不支持的字符。我可以通过foreach循环来检查每个字符串,但我想知道是否有更好的方法来实现这一点?可能正在使用Linq?

问题编辑

如果我必须用一个空格字符替换不支持的字符,怎么样。。所以"我的@@Naame!@%%Is~~Foo"应该转换为"我的名字是Foo"?当然,所有字符串仍在列表"名称"中

编辑2使用Regex.Replace()解决问题

从列表中的字符串中删除特殊字符

better way。不确定。另一种方式?大概

var names = new List<string> { "asa", "@!", "~!@#$%^tryt", "asas**)_+lk" };
var unsupportedCharacters = new HashSet<char>("~!#$%^&*");
var newNames = names.Select(n => String.Join("", n.Where(c => !unsupportedCharacters.Contains(c))))
                    .ToList();

这将为您提供所需的结果:

List<string> names = new List<string> { "asa", "@!", "~!@#$%^tryt", "asas**)_+lk" };
List<string> unsupportedCharacters = new List<string> { "~", "!", "#", "$", "%", "^", "&", "*" };
var result = names.Select(str => string.Concat(str.Split(unsupportedCharacters.ToArray(), StringSplitOptions.RemoveEmptyEntries)));