Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何检查字符串是否包含具有可变值的字符串组合_C#_String_Filtering - Fatal编程技术网

C#如何检查字符串是否包含具有可变值的字符串组合

C#如何检查字符串是否包含具有可变值的字符串组合,c#,string,filtering,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")

目前我正在写:

    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.)
    }

提前感谢。

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) ...
如果对
BANKxxx
中的
xxx
没有限制(例如,
BANK555
可以),我们可以使用更简单的模式:

var isMatch = Regex.Matches(ReadText[idx], "BANK\\d+").Count > 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

你在找regex你在乎哪个行号或d你只想要出现“xxxx”的行吗?使用类似于
Enumerable.Range(0,256)的东西可能更容易。选择(i=>“BANK”+i)。包含(ReadText[idx])
而不是regex。谢谢,我不熟悉regex。感觉你的方法就是我想要的。你也可以使用capture group+regex,检查捕获的值是否在你想要的范围内,因为老实说,regex对于算术比较来说是一个糟糕的解决方案。@Alwyn当然这是一个很好的解决方案,但是它需要一些
,以便
循环遍历所有组,并
值解析为
int
float
。。。根据某些条件检查值。这样我们就不需要任何
循环。当然,这种方法在检查数值的能力上是有限的,但在OP的这种情况下是可以的。
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