【发布时间】:2018-08-12 18:24:52
【问题描述】:
我试图在代码战中解决这个问题,但我不知道它有什么问题。错误说:
System.ArgumentOutOfRangeException : 长度不能小于零。
参数名称:长度
我会很感激任何帮助
public static string BreakCamelCase(string str)
{
if (str.Length < 1)
return "";
var res = "";
foreach (var c in str)
{
if (char.IsUpper(c))
res = str.Substring(0,str.IndexOf(c)) + " " + str.Substring(str.IndexOf(c));
str = res;
}
return res;
}
【问题讨论】:
-
if 条件下块周围缺少大括号。没有大括号,第二条语句总是被执行
-
你不应该在 foreach 中修改
str。 -
如果您在调试器中单步执行代码,您将看到
str = res始终执行,因为您忘记在 if 之后使用{ }。学习使用调试器将帮助您找出逻辑错误,编译器只会发现语法错误。同样如前所述,如果您修改使用 foreach 循环的字符串(和其他集合),则很危险且容易搞砸,构建副本有时更安全。
标签: c# camelcasing