3

我有以下内容:

string test = "CustomerNumber";

或者

string test2 = "CustomerNumberHello";

结果应该是:

string result = "Customer";

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

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

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

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

4

5 回答 5

10

以下应该有效:

var result = new string(
    test.TakeWhile((c, index) => index == 0 || char.IsLower(c)).ToArray());
于 2012-07-02T14:30:43.737 回答
1

您可以通过字符串查看哪些值(ASCII)低于 97 并删除结尾。不是最漂亮或 LINQiest 的方式,但它有效......

    string test2 = "CustomerNumberHello";

    for (int i = 1; i < test2.Length; i++)
    {
        if (test2[i] < 97)
        {
            test2 = test2.Remove(i, test2.Length - i);
            break;
        }
    }
    Console.WriteLine(test2); // Prints Customer
于 2012-07-02T14:33:42.263 回答
1

尝试这个

 private static string GetFirstWord(string source)
        {
            return source.Substring(0, source.IndexOfAny("ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToArray(), 1));
        }
于 2012-07-02T14:38:32.237 回答
-3

Z][az]+ 正则表达式它将字符串拆分为以大字母开头的字符串 她就是一个例子

  regex = "[A-Z][a-z]+";
            MatchCollection mc = Regex.Matches(richTextBox1.Text, regex);
            foreach (Match match in mc)
                if (!match.ToString().Equals(""))
                    Console.writln(match.ToString() + "\n");
于 2012-07-02T14:37:44.170 回答
-3

我已经测试过,这有效:

string cust = "CustomerNumberHello";
string[] str = System.Text.RegularExpressions.Regex.Split(cust, @"[a-z]+");
string str2 = cust.Remove(cust.IndexOf(str[1], 1));
于 2012-07-02T14:43:51.083 回答