检查字符串是否包含特定的整数

时间:2017-02-21 14:45:38

标签: vb.net

我有一个网格视图,其中包含一个包含字符串的列(中间列)。

Gridview

rowDataBound事件中,我想遍历列,查找它包含的整数,然后在第一列中显示一个值。

我知道整数范围是1到63,所以我可以使用FOR loop来遍历数字。这是我到目前为止所拥有的。

For x As Integer = 1 To 63

If CType(e.Row.Cells(2).FindControl("lblTagName"), Label).Text Then

End If

Next

我遇到的问题是使用contains。我不能使用以下内容,因为x = 1时数字1,10,11等也是如此。

For x As Integer = 1 To 63

If CType(e.Row.Cells(2).FindControl("lblTagName"), Label).Text.Contains(x) Then

End If

Next

如何确保每个号码只能获得一个结果?即x = 6将返回UMIS.75OPTR6GROSSMARGIN.F_CV,而不是包含数字6的所有其他字符串。

更新 - 根据一些答案,我可能没有很好地解释这一点。我想循环遍历gridview,如果找到数字1,而第二列中只有数字1,而不是10等,那么我想显示"运行1"在第一列。因此,当x = 10时,它将显示" Run 10"等等。

更新2 - 我的解释,道歉。

结果网格视图将如下所示。

Resultant gridview

第二列的顺序未设置且不按顺序排列。

3 个答案:

答案 0 :(得分:1)

您必须检查标签的整个文本,以确定它是否仅1,而不是10, 11, 12, 13, ...

此外,在这种情况下,您应该使用DirectCast而不是CTypeCType仅在转换为包含转换运算符的 不同 类型时使用,此处您始终处理标签。

For x As Integer = 1 To 63

    If String.Equals(DirectCast(e.Row.Cells(2).FindControl("lblTagName"), Label).Text, "UMIS.75OPTR" & x & "GROSSMARGIN.F_CV", StringComparison.OrdinalIgnoreCase) Then
        'Do your stuff.
    End If

Next

答案 1 :(得分:1)

你可能想要考虑是否采取相反的方式。使用正则表达式匹配获取字符串中的数字列表。

    Dim s As String = "asd12asdasd.sdf3sdf"

    For Each m As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(s, "[\d]*")
        If m.Success AndAlso Not String.IsNullOrEmpty(m.Value) Then
            ' m.Value
        End If
    Next

使用该数字列表,您可以检查它是否在1到63之间。

如果您的字符串具有相同的后缀/前缀,只需删除它们即可显示该数字是什么。

    Dim s As String = "UMIS.75OPTR12GROSSMARGIN.F_CV"
    Dim number As String = s.Replace("UMIS.75OPTR", "").Replace("GROSSMARGIN.F_CV", "")

答案 2 :(得分:0)

在Do Until循环中向后退:

Dim bolFoundMatch As Boolean = False
Dim intCursor As Integer = 63

Do Until (bolFoundMatch OrElse intCursor = 0)

     If CType(e.Row.Cells(2).FindControl("lblTagName"), Label).Text.Contains(intCursor) Then

          'Anything you want to do when you find your match.

          'This will ensure your loop exits.
          bolFoundMatch = True

     End If 

     intCursor -= 1

Loop