c#if String包含2“hallo”

时间:2011-11-08 16:09:02

标签: c# string

  

可能重复:
  How would you count occurences of a string within a string (C#)?

我想检查String是否包含2件事。

String hello = "hellohelloaklsdhas";

if hello.Contains(*hello 2 Times*); -> True

我该如何解决这个问题?

8 个答案:

答案 0 :(得分:10)

你可以使用正则表达式:)

return Regex.Matches(hello, "hello").Count == 2;

这匹配模式hello的字符串"hello",如果计数为2,则返回true。

答案 1 :(得分:5)

正则表达式。

if (Regex.IsMatch(hello,@"(.*hello.*){2,}"))

我猜你的意思是“你好”,这将匹配一个至少有2个“你好”的字符串(不完全是2个“你好”)

答案 2 :(得分:2)

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
    }
}

答案 3 :(得分:1)

您可以使用正则表达式,并检查匹配函数的结果长度。如果它是两个你赢了。

答案 4 :(得分:1)

new Regex("hello.*hello").IsMatch(hello)

Regex.IsMatch(hello, "hello.*hello")

答案 5 :(得分:1)

如果你使用正则表达式MatchCollection,你可以很容易地得到这个:

MatchCollection matches;

Regex reg = new Regex("hello"); 

matches = reg.Matches("hellohelloaklsdhas");
return (matches.Count == 2);

答案 6 :(得分:1)

的IndexOf

您可以使用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:

return (Regex.Matches(hello, "hello").Count == 2);

答案 7 :(得分:1)

的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)