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]);
}