-4

私は

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 を使用している可能性がありますか?

質問編集

unsupportedCharacters を 1 つの空白文字に置き換える必要がある場合はどうすればよいでしょうか..「My@@Naame!@%%Is~~Foo」を「My Name Is Foo」に変換する必要がありますか?もちろん、すべての文字列は引き続きリスト「名前」

編集2 Regex.Replace()を使用して解決しました

4

2 に答える 2

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();
于 2013-08-12T23:24:19.763 に答える
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)));
于 2013-08-12T23:50:33.563 に答える