2012-08-08 51 views
-1

我有一个字符串前导空格 - 计数前缀空间

  -123 

我需要得到2作为计数。

   -12& 3 

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

我使用的代码是

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

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

+0

尝试改写你的问题,这不是很清楚你是什么之后。 – 2012-08-08 23:09:06

+0

我们是否会担心会出现多个破折号? – 2012-08-09 03:42:03

+0

此外,你想要围绕短划线的空格数目正确吗? – 2012-08-09 12:39:46

回答

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(); 
} 
0

你可以使用TrimStart()方法来获得原始字符串没有尾随空格再算上原有的长度之间的差异,修剪一个:

stringValue.Length - stringValue.TrimStart().Length 

编辑

要在串数的空间数由s分割青梅分离器,试试这个:

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();