在下一个大写字母之前获取字符串(文本)

eMi*_*eMi 3 .net c# linq string

我有以下内容:

string test = "CustomerNumber";
Run Code Online (Sandbox Code Playgroud)

要么

string test2 = "CustomerNumberHello";
Run Code Online (Sandbox Code Playgroud)

结果应该是:

string result = "Customer";
Run Code Online (Sandbox Code Playgroud)

字符串中的第一个单词是结果,第一个单词一直持续到第一个大写字母,这里是'N'

我已经尝试过这样的事情:

var result = string.Concat(s.Select(c => char.IsUpper(c) ? " " + c.ToString() : c.ToString()))
    .TrimStart();
Run Code Online (Sandbox Code Playgroud)

但没有成功,希望有人能为我提供一个小而干净的解决方案(没有RegEx).

Raw*_*ing 10

以下应该有效:

var result = new string(
    test.TakeWhile((c, index) => index == 0 || char.IsLower(c)).ToArray());
Run Code Online (Sandbox Code Playgroud)