2017-02-21 196 views
0

我有一個網格視圖,其中有一個包含字符串的列(中間列)。檢查字符串是否包含特定整數

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」等等。

UPDATE 2 - 它的definatley我的解釋,道歉。

生成的網格視圖看起來像這樣。

Resultant gridview

第二列的次序不被設置並且不是爲了。

+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 
+0

感謝抱歉的困惑 – Silentbob

+0

@Silentbob:沒問題,有時候很難向別人解釋你想要用你的代碼做什麼:)。很高興我能幫上忙! - 另外請注意,因爲我使用的是StringComparison.OrdinalIgnoreCase,所以匹配不區分大小寫。因此,如果標籤的文字是「umis.75opTr6grOSsmargIN.F_Cv」,只要它們是相同的字符,則無關緊要。 –

0

去向後一做,直到循環:

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 
+0

當然,如果intcursor = 1,那麼它會停在61,而我想去1 – Silentbob

+0

這就是爲什麼我會倒退。 61會在回到1之前停止循環。 – N0Alias

+0

但是他希望它從_和__開始,而不是相反。 –

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", "") 
+0

對於正則表達式示例,請記住,他的字符串以「UMIS。** 75 **」開頭。 –

相關問題