2015-11-24 4 views
4

Я хочу сделать контроль, когда я создаю CompanyID, чтобы не допустить, чтобы создать идентификатор со специальными символами, такими как, (&), (/),(), (п), ('):Можно добавить String.contains более одного значения?

If txtIdCompany.Text.Contains("&") Then 
    // alert error message 
End If 

Но я не могу это сделать:

If txtIdCompany.Text.Contains("&", "/", "\") Then 
     // alert error message 
    End If 

Как я могу проверить более одной строки в одной строке?

+4

[ 'String.IndexOfAny()'] (https://msdn.microsoft.com/en-us/ library/system.string.indexofany (v = vs.110) .aspx) –

+0

Возможный дубликат [VB.NET - Добавление более 1 строки в .contains] (http://stackoverflow.com/questions/2212719/vb- net-add-more-than-1-string-to-contains) – CodingIntrigue

+0

Я положил этот ответ, потому что еще не нашел решение на других страницах. thanks –

ответ

7

Вы можете использовать коллекции как Char() и Enumerable.Contains. Поскольку String реализует IEnumerable(Of Char) даже этот краткий и эффективный запрос LINQ работы:

Dim disallowed = "&/\" 
If disallowed.Intersect(txtIdCompany.Text).Any() Then 
    ' alert error message 
End If 

вот подобный подход с использованием Enumerable.Contains:

If txtIdCompany.Text.Any(AddressOf disallowed.Contains) Then 
    ' alert error message 
End If 

третий вариант с использованием String.IndexOfAny:

If txtIdCompany.Text.IndexOfAny(disallowed.ToCharArray()) >= 0 Then 
    ' alert error message 
End If 
+0

Большое спасибо за вашу помощь. : -D –

0
If txtIdCompany.Text.Contains("&") Or txtIdCompany.Text.Contains("\") Or txtIdCompany.Text.Contains("/") Then 

    // alert error message 

End If 
+1

именно то, что я хотел, не должно было это делать. Потому что в примере я помещаю несколько символов, но мне нужно поставить все это: (&/\ -''' + * ~ $ áéíóú {} []() ¿? = # @% | <> :; ç) , поэтому, если мне нужно поставить: txtIdCompany.Text.Contains («&») для каждого из них, код будет слишком длинным. Но все равно спасибо. –

Смежные вопросы