6

我有这个:

string strings = "a b c d d e";

而且我需要类似的东西string.Contains(),但我不仅需要知道字符串是否存在(如果在字母上方),还需要知道它是否只存在一次

我怎样才能做到这一点?

4

6 回答 6

16

您可以使用LastIndexOf(String)andIndexOf(String)并验证返回的值是否相等。当然还要检查是否找到了字符串(即返回值不是-1)。

于 2013-02-08T15:04:51.097 回答
6

你可以使用 LINQ

int count = strings.Count(f => f == 'd');
于 2013-02-08T15:04:21.993 回答
1

替代

if(Regex.Matches(input,Regex.Escape(pattern)).Count==1)
于 2013-02-08T15:10:18.957 回答
1

另一个简单的选择:

if(strings.Split(new [] { "a" }, StringSplitOptions.None).Length == 2)
于 2018-01-19T08:26:08.953 回答
0

试试下面...它会帮助你...

string strings = "a b c d d e";
string text ="a";
int count = 0;
int i = 0;
while ((i = strings.IndexOf(text, i)) != -1)
{
    i += text.Length;
    count++;
}
if(count == 0)
Console.WriteLine("String not Present");

if(count == 1)
Console.WriteLine("String Occured Only one time");

if(Count>1)
Console.WriteLine("String Occurance : " + count.Tostring());
于 2013-02-08T15:21:16.387 回答
0
    string source = "a b c d d e";
    string search = "d";
    int i = source.IndexOf(search, 0);
    int j = source.IndexOf(search, i + search.Length);
    if (i == -1)
        Console.WriteLine("No match");
    else if (j == -1)
        Console.WriteLine("One match");   
    else
        Console.WriteLine("More match");
于 2013-02-08T16:22:59.703 回答