2012-08-08 53 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();