计算字符串开头的空格

cod*_*kio 16 c# string whitespace count

我如何计算C#中字符串开头的空格量?

例:

"    this is a string"
Run Code Online (Sandbox Code Playgroud)

结果将是4.不确定如何正确地做到这一点.

谢谢.

Tim*_*ter 24

使用Enumerable.TakeWhile,Char.IsWhiteSpaceEnumerable.Count

int count = str.TakeWhile(Char.IsWhiteSpace).Count();
Run Code Online (Sandbox Code Playgroud)

请注意,不仅" "是白色空间,而且:

空格字符是以下Unicode字符:

  • SpaceSeparator类别的成员,包括字符SPACE(U + 0020),OGHAM SPACE MARK(U + 1680),MONGOLIAN VOWEL SEPARATOR(U + 180E),EN QUAD(U + 2000),EM QUAD(U + 2001) ,EN SPACE(U + 2002),EM SPACE(U + 2003),三维空间(U + 2004),四个空间(U + 2005),每六个空间(U +) 2006),数字空间(U + 2007),PUNCTUATION SPACE(U + 2008),THIN SPACE(U + 2009),头发空间(U + 200A),NARROW NO-BREAK SPACE(U + 202F),MEDIUM MATHEMATICAL SPACE( U + 205F)和IDEOGRAPHIC SPACE(U + 3000).
  • LineSeparator类别的成员,仅由LINE SEPARATOR字符(U + 2028)组成.
  • ParagraphSeparator类别的成员,仅包含PARAGRAPH SEPARATOR字符(U + 2029).字符CHARACTER TABULATION(U + 0009),LINE FEED(U + 000A),LINE TABULATION(U + 000B),FORM FEED(U + 000C),CARRIAGE RETURN(U + 000D),NEXT LINE(U + 0085),和NO-BREAK SPACE(U + 00A0).


Mar*_*zek 10

您可以使用LINQ,因为string实现IEnumerable<char>:

var numberOfSpaces = input.TakeWhile(c => c == ' ').Count();
Run Code Online (Sandbox Code Playgroud)


Ser*_*kiy 6

input.TakeWhile(c => c == ' ').Count()
Run Code Online (Sandbox Code Playgroud)

要么

input.Length - input.TrimStart(' ').Length
Run Code Online (Sandbox Code Playgroud)