c#如果字符串包含2”;hallo”;

本文关键字:hallo 包含 如果 字符串 | 更新日期: 2023-09-27 18:13:55

可能重复:
如何计算字符串(C#(中字符串的出现次数?

我想检查字符串是否包含2个内容。。

String hello = "hellohelloaklsdhas";
if hello.Contains(*hello 2 Times*); -> True

我该如何解决这个问题?

c#如果字符串包含2”;hallo”;

您可以使用正则表达式:(

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)