C# 验证字符串是否包含某些确切的单词
我有一根像这样的绳子C# 验证字符串是否包含某些确切的单词,c#,regex,C#,Regex,我有一根像这样的绳子 string myString = "Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\""; 我需要验证它是否包含确切的单词Master和Language=“C#” 我不能总是保证单词Master和Language会这样放置,因此像Contains(“Master Language”)这样的东西是不行的 我一直在玩regex.IsMatch有一段时间没有任何结果,所以如果有人能帮
string myString = "Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"";
我一直在玩
regex.IsMatch
有一段时间没有任何结果,所以如果有人能帮助我,我将不胜感激 您可以使用string类的Contains()方法。您可以使用IndexOf方法找出字符串中是否存在该模式
string strTestMe=Regex.Replace(myString,“.*(主语言=\“C\”.*”,“$2”)
如果strTestMe“”
做事
如果结束
我意识到这可能不是你想要的答案,但老实说,在这里使用正则表达式似乎有些过分。通过简单地使用string.Contains,您可能会获得更好的整体性能,因为您需要以任何顺序查找单词的出现情况,所以可以使用以下模式:
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));
}
这就是我所做的
bool containMaster = Regex.IsMatch(myString, @"\bMaster\b");
bool containLanguage = Regex.IsMatch(myString, "Language=\"C#\"");
简单而有效为什么不
IndexOf()>=0
或包含
?包含将同时获得主页面文件和主页面文件,所以不@Trikks只有在搜索“母版”时才是这样,但如果搜索示例中出现的Master Language=“C#”
,它将与“母版”不匹配。除非这两个单词可以出现在字符串中的任何位置,而不是如图所示,否则Contains
就足够了。属性有时可能会改变@Trikks那么你需要在你的问题中包括这个。不,因为我在找Master,而MasterPageFile这个词也可能在字符串中。如果字符串中有一个不好,那么该方法将始终返回true。Contains将同时获取Master和MasterPageFile,所以nope nope!这样做的技巧,但我不能总是说,字符串总是这样构造的。属性有时可能会改变!这很有效,我将采用稍微不同的方法,但这是最接近的。感谢您理解使用Regex解决此类问题的价值!。。。而且比字符串方法更好,比如Contain any way of the week。
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));
}
bool containMaster = Regex.IsMatch(myString, @"\bMaster\b");
bool containLanguage = Regex.IsMatch(myString, "Language=\"C#\"");