c# if String Contains 2 “hallo”
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How would you count occurences of a string within a string (C#)?
我想检查一个字符串是否包含两个内容。
1 2 3 | String hello ="hellohelloaklsdhas"; if hello.Contains(*hello 2 Times*); -> True |
我怎么解决这个问题?
您可以使用regex:)
1 | return Regex.Matches(hello,"hello").Count == 2; |
这与模式
正则表达式。
1 | if (Regex.IsMatch(hello,@"(.*hello.*){2,}")) |
我猜你的意思是"你好",这将匹配一个字符串至少有2个"你好"(不完全是2个"你好")。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public static class StringExtensions { public static int Matches(this string text, string pattern) { int count = 0, i = 0; while ((i = text.IndexOf(pattern, i)) != -1) { i += pattern.Length; count++; } return count; } } class Program { static void Main() { string s1 ="Sam's first name is Sam."; string s2 ="Dot Net Perls is about Dot Net"; string s3 ="No duplicates here"; string s4 ="aaaa"; Console.WriteLine(s1.Matches("Sam")); // 2 Console.WriteLine(s1.Matches("cool")); // 0 Console.WriteLine(s2.Matches("Dot")); // 2 Console.WriteLine(s2.Matches("Net")); // 2 Console.WriteLine(s3.Matches("here")); // 1 Console.WriteLine(s3.Matches("")); // 2 Console.WriteLine(s4.Matches("aa")); // 2 } } |
IndexOf:
1 2 3 4 5 6 7 8 9 10 | int FirstIndex = str.IndexOf("hello"); int SecondIndex = str.IndexOf("hello", FirstIndex + 1); if(FirstIndex != -1 && SecondIndex != -1) { //contains 2 or more hello } else { //contains not } |
或者如果你想要2:
索引
可以使用
下面是一个应该说明问题的例子。
1 2 3 4 5 6 7 8 9 10 | var theString ="hello hello bye hello"; int index = -1; int helloCount = 0; while((index = theString.IndexOf("hello", index+1)) != -1) { helloCount++; } return helloCount==2; |
正则表达式
另一种获得计数的方法是使用regex:
1 | return (Regex.Matches(hello,"hello").Count == 2); |
如果使用正则表达式matchCollection,则可以轻松获得:
1 2 3 4 5 6 | MatchCollection matches; Regex reg = new Regex("hello"); matches = reg.Matches("hellohelloaklsdhas"); return (matches.Count == 2); |
或
您可以使用regex,并检查matches函数结果的长度。如果是两个,你就赢了。