字符串中字符前的前导空格 - 计数前缀空间

时间:2012-08-08 22:13:03

标签: c# .net linq

我有一个字符串

  -123

我需要得到2作为计数。

   -12& 3

我需要得到4作为计数。 (在这种情况下,我希望在' - '之前有3个空格。)

我使用的代码是

stringValue.Count(countSpace => countSpace == ' ');

如何通过约束检查,即。 “ - ”在这种情况下划线并获得“ - ”破折号之前和“ - ”之后的空格。

2 个答案:

答案 0 :(得分:1)

假设有一个或零的破折号,这将起作用:

public static int CountSurroundingSpaces(string stringValue, char constraint)
{
    return stringValue.SkipWhile( c => c != constraint)
                      .Skip(1)
                      .TakeWhile( c => c == ' ')
                      .Count() +
           stringValue.Reverse()
                      .SkipWhile( c => c != constraint)
                      .Skip(1)
                      .TakeWhile( c => c == ' ')
                      .Count();
}

答案 1 :(得分:0)

您可以使用TrimStart()方法获取没有尾随空格的原始字符串,然后计算原始字符串和修剪过的字符串之间的差异:

    stringValue.Length - stringValue.TrimStart().Length

修改

要计算按某个分隔符拆分的字符串中的空格数,请尝试以下操作:

    static IEnumerable<int> GetSpaceCounts(string stringValue, char separator)
    {
        return stringValue.Split(separator).Select(s => s.Count(c => c == ' '));
    }

要测试此代码,您可以使用:

    string stringValue = "    -123 12-  ";

    foreach (int i in GetSpaceCounts(stringValue, '-'))
        Console.WriteLine(i);

    Console.ReadLine();