如何计算除字符串末尾的字母外的所有字符

Dom*_*mMa 2 c# string

我有一个随机字符串,需要知道其末尾非字母/非数字字符的数量

例如:

"Some text."应该导致1

"More text 123 !.?"应该导致4(包括空格)

"Even more text 123"应为0

我怎样才能做到这一点?

Dmi*_*nko 6

您可以尝试Linq

  string source = "More text 123 !.?";

  int result = source
    .Reverse()
    .TakeWhile(c => !char.IsLetterOrDigit(c))
    .Count();
Run Code Online (Sandbox Code Playgroud)

演示:

string[] tests = new string[] {
  "Some text.",
  "More text 123 !.?",
  "Even more text 123"
};

string demo = string.Join(Environment.NewLine, tests
  .Select(s => $"{s,-30} : {s.Reverse().TakeWhile(c => !char.IsLetterOrDigit(c)).Count()}"));

Console.Write(demo);
Run Code Online (Sandbox Code Playgroud)

结果:

Some text.                     : 1
More text 123 !.?              : 4
Even more text 123             : 0
Run Code Online (Sandbox Code Playgroud)