2016-12-22 4 views
0

無効な文字を文字列配列からUrlEncodeにチェックしたいと思います。 LINQを使ってどのように達成できますか?C#の文字列配列に対して無効な文字チェックを見つける

string str = "[email protected]$5000"; 
List<string> invalidChars = new List<string> { "@", "$" } 
if (str.IndexOf(invalidChars) >= 0) // put linq to loop 
{ str = System.Net.WebUtility.UrlEncode(str); } 

Plsのアドバイス:

は、ここに私のコードです!

+0

とにかく 'UrlEncode'を呼び出さないのはなぜですか?それはあなたの事前チェックよりもはるかに面倒です。 –

+0

なぜLINQのソリューションが存在すると思いますか?なぜあなたはこのアプローチが現在のものよりも良いと思いますか? – HimBromBeere

+1

regexを使用しない理由 https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx – user1080381

答えて

0

使用AnyContains

string str = "mynamegmail.comAndIhave5000"; 
List<string> invalidChars = new List<string> { "@", "$" }; 
if (invalidChars.Any(invalid => str.Contains(invalid))) { 
     // do work 
} 
0

あなたは、文字列のリストにあなたの文字列を変換する必要があり、その後、あなたは無効な文字が存在するかどうか、

string str = "[email protected]$5000"; 
List<string> invalidChars = new List<string> { "@", "$" }; 

var strList = str.Select(c => c.ToString()); 

if (strList.Any(invalidChars.Contains)) 
{ 
    //Found 
} 
+0

'ToCharArray()'を呼び出す必要はなく、 'ToList()'を呼び出す必要はありません... – apocalypse

+0

あなたは正しいですか、答えを更新してください。 –

0

されていることを文字列の両方のリストを比較多くの可能な解決策の1つ:

var str = "[email protected]$5000"; 

var invalidChars = new[] { '@', '$' }; 

var invalidCharsFound = str.Intersect (invalidChars); 

bool hasInvalidChars = invalidCharsFound.Any(); 

invalidCharsFound.Dump(); // LinqPad 
hasInvalidChars.Dump(); 

Code result

関連する問題