我有一个从文件中获取的字符串列表。这些字符串中的一些格式为" Q" +数字+" null" (例如Q98null,Q1null,Q24null等)
使用foreach循环,我必须检查字符串是否与之前显示的字符串相同。 我现在就用这个
string a = "Q9null" //just for testing
if(a.Contains("Q") && a.Contains("null"))
MessageBox.Show("ok");
但是我想知道是否有更好的方法来使用正则表达式。 谢谢!
答案 0 :(得分:3)
您的方法会产生大量误报 - 例如,它会识别一些无效的字符串,例如"nullQ"
或"Questionable nullability"
。
测试匹配的正则表达式为"^Q\\d+null$"
。结构非常简单:它表示目标字符串必须以Q
开头,然后应该有一个或多个十进制数字,然后最后应该有null
。
Console.WriteLine(Regex.IsMatch("Q123null", "^Q\\d+null$")); // Prints True
Console.WriteLine(Regex.IsMatch("nullQ", "^Q\\d+null$")); // Prints False
答案 1 :(得分:0)
public static bool Check(string s)
{
Regex regex = new Regex(@"^Q\d+null$");
Match match = regex.Match(s);
return match.Success;
}
在您的代码中应用上述方法:
string a = "Q9null" //just for testing
if(Check(a))
MessageBox.Show("ok");
答案 2 :(得分:0)
第一种方式:使用正则表达式
使用此正则表达式^Q\d+null$
第二种方式:使用SubString
string s = "Q1123null";
string First,Second,Third;
First = s[0].ToString();
Second = s.Substring(1,s.Length-5);
Third = s.Substring(s.Length-4);
Console.WriteLine (First);
Console.WriteLine (Second);
Console.WriteLine (Third);
然后你可以检查一切......