c#如果字符串包含2”;hallo”;
本文关键字:hallo 包含 如果 字符串 | 更新日期: 2023-09-27 18:13:55
可能重复:
如何计算字符串(C#(中字符串的出现次数?
我想检查字符串是否包含2个内容。。
String hello = "hellohelloaklsdhas";
if hello.Contains(*hello 2 Times*); -> True
我该如何解决这个问题?
您可以使用正则表达式:(
return Regex.Matches(hello, "hello").Count == 2;
这与模式"hello"
的字符串hello
相匹配,如果计数为2,则返回true。
正则表达式。
if (Regex.IsMatch(hello,@"(.*hello.*){2,}"))
我猜你的意思是"你好",这将匹配一个至少有2个"你好"(不完全是2个"hello"(的字符串
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
}
}
您可以使用正则表达式,并检查Matches函数结果的长度。如果是两个,你就赢了。
new Regex("hello.*hello").IsMatch(hello)
或
Regex.IsMatch(hello, "hello.*hello")
如果您使用正则表达式MatchCollection,您可以很容易地获得:
MatchCollection matches;
Regex reg = new Regex("hello");
matches = reg.Matches("hellohelloaklsdhas");
return (matches.Count == 2);
索引
您可以使用IndexOf
方法来获取某个字符串的索引。这个方法有一个重载,它接受一个起点,从哪里开始查找。如果找不到指定的字符串,则返回-1
。
这是一个不言自明的例子。
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
另一种获取计数的方法是使用Regex:
return (Regex.Matches(hello, "hello").Count == 2);
IndexOf:
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:if(FirstIndex != -1 && SecondIndex != -1 && str.IndexOf("hello", SecondIndex) == -1)