是否可以添加一个 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 多个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中的 String.contains() 方法中使用正则表达式
C#判断字符串中是否包含指定字符或字符串(Contains/IndexOf)