检查字符串是否包含某些文本

时间:2014-12-02 17:44:33

标签: vb.net string text contains

If String1.Contains("something") AndAlso String2.'does not contain something'
    'do stuff
End If

有一种简单的方法吗?我试过

If String1.Contains("something") AndAlso Not String2.Contains("something else")
    'do stuff
End If

但它不起作用......

4 个答案:

答案 0 :(得分:6)

好的,我们有一个字符串,

Dim someString = "this something that"

表达式

someString.Contains("something")

评估为True。表达式

someString.Contains("something else")

评估为False。表达式

Not someString.Contains("something else")

评估为True


注意:

表达式

someString.Contains("Something")

评估为False因为"Something""something"进行序数区分大小写的比较失败。除非另有说明,否则字符串比较是序数区分大小写。


关于如何进行文化/案例/规范化的扩展答案敏感包含字符串see my answer here的操作。

答案 1 :(得分:2)

只需在两个字符串上使用IndexOf,然后使用if表达式

Dim pos1 = String1.IndexOf("something") 
Dim pos2 = String2.IndexOf("something else")

if pos1 < 0 AndAlso pos2 < 0 then
    ' the string1 doesn't contain "something" and string2 doesn't contain "something else"
End If

string.IndexOf返回作为参数传递的字符串的字符位置。如果在源字符串中找不到参数,则返回值为-1,如MSDN docs

中所述

如果您的搜索字词包含与输入字符串不同的字符,则IndexOf也很有用 例如,如果输入文本包含单词“Something”(大写'S'),则使用术语“something”搜索此输入将使用Contains或vanilla IndexOf失败。 但是使用IndexOf,您可以编写类似这样的内容

Dim pos1 = String1.IndexOf("something", StringComparison.CurrentCultureIgnoreCase) 
Dim pos2 = String2.IndexOf("something else", StringComparison.CurrentCultureIgnoreCase)

这将迫使IndexOf将“Something”和“something”视为相同的字符串。

最后,您的问题不清楚是否要检查缺少的文本只有第二个字符串或两个字符串,但是如果搜索到的字符串存在,则知道IndexOf返回&gt; = 0,那么修改if应该非常简单满足您需求的条件。

答案 2 :(得分:0)

Dim String1 As String = "This one contains something at index 18"
Dim String2 As String = "You won't find your string here !"

Debug.WriteLine("String1 : IndexOf(something) = " _
    + String1.IndexOf("something").ToString())
Debug.WriteLine("String2 : IndexOf(something else) = " _
    + String1.IndexOf("something else").ToString())

If String1.Contains("something") AndAlso Not String2.Contains("something else") Then
    Debug.WriteLine("String1 contains [something]")
    Debug.WriteLine("String2 doesn't contain [something else]")
End If

以上代码输出:

'String1 : IndexOf(something) = 18
'String2 : IndexOf(something else) = -1
'String1 contains [something]
'String2 doesn't contain [something else]

Not前面添加 String.Contains(blah) 肯定意味着 the String doesn't contain [blah] 。我没有看到Not Contains ..

的任何问题

您的代码有什么问题?或者您的变量及其实际内容有什么问题?或者你是否忘记了你的变量?仔细考虑值和变量名称中的大/小写情况(即使它已知的VB不关心,避免使用套管megamix)

  

Breakpoint 条件测试之前使用 If ,然后运行   调试器。请查看 String1 String2 内容。

答案 3 :(得分:-1)

您可以使用vbNullString检查字符串是否包含文本。试试这段代码:

If String1.Text = vbNullString AND String2.Text = vbNullString Then
'do stuff
else
'the string is empty
End if