验证字符串是否包含一些确切的单词
本文关键字:单词 字符串 是否 包含一 验证 | 更新日期: 2023-09-27 18:32:53
>我有一个看起来像这样的字符串
string myString = "Master Language='"C#'" MasterPageFile='"~/masterpages/Libraries.master'"";
- 我需要验证它是否包含确切的单词 Master 和 Language="C#"
- 我不能总是保证Master和Language这两个词会像这样放置,因此像Contains("Master Language")这样的东西是行不通的。
一段时间以来,我一直在玩regex.IsMatch
没有任何结果,所以如果有人能帮助我,我将不胜感激!
由于您需要按任何顺序查找单词的出现次数,因此可以使用以下模式:
string pattern = @"^(?=.*'bMaster'b)(?=.*Language=""C#"").+$";
这使用积极的环顾四周来检查是否存在Master
和Language="C#"
。请注意使用词边界元字符 'b
,这可确保"Master"是完全匹配的。这可确保不会在"母版页"中发生部分匹配。
例:
string[] inputs =
{
"Master Language='"C#'" MasterPageFile='"~/masterpages/Libraries.master'"", // true
"Language='"C#'" MasterPageFile='"~/masterpages/Libraries.master'" Master", // true
"Language='"C#'" MasterPageFile='"~/masterpages/Libraries.master'"" // false
};
string pattern = @"^(?=.*'bMaster'b)(?=.*Language=""C#"").+$";
foreach (var input in inputs)
{
Console.WriteLine(Regex.IsMatch(input, pattern));
}
你可以使用 Contains() 方法来处理字符串类。
string strTestMe = Regex.Replace(myString, ".*(Master Language='"C#'").*", "$2")
If strTestMe <> ""
DO STUFF
End If
我知道这可能不是您要寻求的答案,但老实说,在这里使用正则表达式似乎有点矫枉过正。通过简单地使用字符串,您可以获得更好的整体性能。包含
您可以使用 IndexOf 方法 LINK 找出字符串中是否存在该模式。
bool found = myString.IndexOf("Master Language='"C#'"") != -1;
这就是我所做的
bool containMaster = Regex.IsMatch(myString, @"'bMaster'b");
bool containLanguage = Regex.IsMatch(myString, "Language='"C#'"");
简单有效