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