我有一个
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!@ %%是~~ Foo”应该转换为“我的名字是Foo”吗?当然所有的字符串都是仍在列表“名称”
编辑2 使用Regex.Replace()
解决了它答案 0 :(得分:1)
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();
答案 1 :(得分:0)
这将为您提供所需的结果:
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)));