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();

しかし、成功せずに、誰かが私に小さくてクリーンなソリューション(正規表現なし)を提供してくれることを願っています。

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

文字列を調べて、97未満の値(ASCII)を確認し、末尾を削除することができます。最も美しい方法や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

私はテストしました、これは動作します:

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 に答える
-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 に答える