C#如何检查字符串是否包含与可更改值组合的字符串

时间:2013-09-12 02:59:21

标签: c# string filtering

目前我在写:

    string[] ReadText = File.ReadAllLines(_FILE);
    for(int idx = 0; idx < ReadText.Length; idx++)
    {
        if (ReadText[idx].Contains("BANK0")
        || ReadText[idx].Contains("BANK1")
        || ReadText[idx].Contains("BANK2")
        || ReadText[idx].Contains("BANK3")
        || ReadText[idx].Contains("BANK4")
        || ReadText[idx].Contains("BANK5")
        || ReadText[idx].Contains("BANK6")
        || ReadText[idx].Contains("BANK7")
        || ReadText[idx].Contains("BANK8")
        || ReadText[idx].Contains("BANK9")
        || ReadText[idx].Contains("BANK10")
        || ReadText[idx].Contains("BANK11")
        || ReadText[idx].Contains("BANK12")
        || ReadText[idx].Contains("BANK13")
        || ReadText[idx].Contains("BANK14")
        || ReadText[idx].Contains("BANK15")
        || etc.)
    }

如果我想从BANK0到BANK255检查,那太可怕了。 有没有像这样的方法:

    if (ReadText[idx].Contains(string.format("BANK{0}",[0-255]))

提前致谢。

2 个答案:

答案 0 :(得分:2)

Regex可以帮助您:

//this will match exact the BANKx to BANK255
var isMatch = Regex.Matches(ReadText[idx], "BANK([12]([0-4]\\d|5[0-5])|\\d{1,2})").Count > 0;
//then check for if(isMatch) ...

如果对xxx中的BANKxxx没有限制(例如,BANK555可以),我们可以使用更简单的模式:

var isMatch = Regex.Matches(ReadText[idx], "BANK\\d+").Count > 0;

答案 1 :(得分:0)

这样的简单函数可以工作:

Private Function strContains(input As String) As Boolean
    If input.Contains("Bank") Then
        Dim temp As Integer = -1
        If Integer.TryParse(input.Substring(4), temp) AndAlso temp > -1 Then
            Return True
        End If
    End If
    Return False
End Function

If strContains(ReadText[idx]) Then

End If