是否可以添加一个 String.contains 多个值?

Posted

技术标签:

【中文标题】是否可以添加一个 String.contains 多个值?【英文标题】:Is possible to add a String.contains more than one value? 【发布时间】:2016-02-27 04:12:15 【问题描述】:

我想在创建 companyId 时进行控制,以不允许创建带有特殊字符(如 (&)、(/)、()、(ñ)、(') 的 id):

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

但我不能这样做:

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

如何在同一行中检查多个字符串?

【问题讨论】:

String.IndexOfAny() VB.NET - Adding more than 1 string to .contains的可能重复 我提出这个答案是因为我还没有在其他页面中找到解决方案。谢谢 其他 Unicode 符号或外来字符呢?您可能希望使用允许字符的白名单,而不是不允许字符的黑名单 我建议使用正则表达式 - 类似于此处使用的 ***.com/questions/2788727/… 【参考方案1】:

您可以使用 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

【讨论】:

非常感谢您的帮助。 :-D【参考方案2】:
If txtIdCompany.Text.Contains("&") Or txtIdCompany.Text.Contains("\") Or txtIdCompany.Text.Contains("/") Then

   // alert error message

 End If 

【讨论】:

正是我想要的不是必须这样做。因为在示例中我放了几个字符,但我需要放所有这些: (&/\ñ´'+*~$áéíóú[]()¿?=#@%|:;ç) ,所以如果我必须为每个输入:txtIdCompany.Text.Contains("&"),代码会太长。不过还是谢谢。

以上是关于是否可以添加一个 String.contains 多个值?的主要内容,如果未能解决你的问题,请参考以下文章

python判断字符串是否包含子字符串

string.contains()

如何在 Java 中的 String.contains() 方法中使用正则表达式

C#判断字符串中是否包含指定字符或字符串(Contains/IndexOf)

C#判断字符串中是否包含指定字符或字符串(Contains/IndexOf)

实体框架 EF.Functions.Like vs string.Contains