计算在出现任何其他字符之前某个字符串出现在字符串中的次数

mub*_*bar 38 c#

我有很多字符串.每个字符串前面至少有1个$.循环遍历每个字符串的字符以计​​算每个字符串的数量的最佳方法是什么$.

例如:

"$hello" - 1
"$$hello" - 2
"$$h$ello" - 2
Run Code Online (Sandbox Code Playgroud)

gpr*_*ant 75

您可以使用Count方法

var count = mystring.Count(x => x == '$')
Run Code Online (Sandbox Code Playgroud)

  • 如果不明显,您需要添加"using System.Linq;" 到你的类文件,或者你会得到'字符串没有Count的定义'错误. (9认同)
  • 不,因为,正如乔恩(Jon)在其评论线程中指出的那样,这将计算所有`$`,而不仅仅是前者。 (2认同)

Yur*_*ich 34

int count = myString.TakeWhile(c => c == '$').Count();
Run Code Online (Sandbox Code Playgroud)

没有LINQ

int count = 0;
while(count < myString.Length && myString[count] == '$') count++;
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 18

最简单的方法是使用LINQ:

var count = text.TakeWhile(c => c == '$').Count();
Run Code Online (Sandbox Code Playgroud)

肯定有更有效的方法,但这可能是最简单的方法.

  • @Levisaxos:如果你真的需要最快的表现,那就有更好的选择.或者,如果您正在使用.NET 2并且在其他地方不需要LINQ.这只是谈论这种情况 - 有很多地方你可以*使用LINQ,但它实际上使代码更复杂而不是更简单. (2认同)
  • var count = text.Count(t => t =='$'); (2认同)
  • @SteveChadbourne:不,那只计算总计的美元数. (2认同)

jop*_*aus 9

你可以这样做,它不需要LINQ,但它不是最好的方法(因为你将整个字符串拆分并放在一个数组中,只需选择它的长度,你最好只做一个while循环并检查每个字符),但它的工作原理.

int count = test.Split('$').Length - 1;
Run Code Online (Sandbox Code Playgroud)


jfo*_*las 6

int count = yourText.Length - yourText.TrimStart('$').Length;
Run Code Online (Sandbox Code Playgroud)


小智 6

var str ="hello";
str.Where(c => c == 'l').Count()  // 2
Run Code Online (Sandbox Code Playgroud)

  • 这枚举了两次字符串,而str.Count(c => c =='l'); 只会枚举一次字符串.这与接受的答案基本相同. (7认同)

小智 5

int count = Regex.Matches(myString,"$").Count;
Run Code Online (Sandbox Code Playgroud)

  • 这将计算所有出现的'$',而不仅仅是开头的那些.从OP的例子来看,这将使第三个测试用例失败. (2认同)

Meh*_*ard 5

public static int GetHowManyTimeOccurenceCharInString(string text, char c)
{
    int count = 0;
    foreach(char ch in text)
    {
        if(ch.Equals(c))
        {
            count++;
        }

    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)