public static string UpperCaseStringSplitter(string stringToSplit)
{
    var stringBuilder = new StringBuilder();
    foreach (char c in stringToSplit)
    {
        if (Char.IsUpper(c) && stringToSplit.IndexOf(c) > 0)
            stringBuilder.Append(" " + c);
        else
            stringBuilder.Append(c);
    }
    return stringBuilder.ToString();
}

如果我传递这样的字符串:
TestSrak

输出是预期的:"Test Srak"
但如果有两个相同的字母,一个小写,另一个大写,则不会发生拆分:
例如,如果输入是:
TestTruck

输出也TestTruck你能告诉我问题在哪里吗?我该怎么解决。谢谢!

最佳答案

问题是

stringToSplit.IndexOf(c) > 0)

"TestTruck"中,第一个字母(index==0)也是一个T,因此它不会输入if
相反,我将使用for-loop并检查当前字符是否是第一个字符,然后您可以跳过拆分:
for(int i=0; i < stringToSplit.Length; i++)
{
    if (i > 0 && Char.IsUpper(stringToSplit[i]))
        stringBuilder.Append(" ").Append(stringToSplit[i]);
    else
        stringBuilder.Append(stringToSplit[i]);
}

10-07 15:53