【发布时间】:2016-06-13 07:49:44
【问题描述】:
我正在编写一个程序,它接收一个字符串作为输入,如果它包含下划线,它会更改字母的格式。例如,如果我收到字符串“here_wego”,它应该返回“hereWego”,但我只得到“herewego”。我在这里尝试做的是将传入的字符串转换为字符数组,然后检查每个字符以检查它是否是下划线。如果它 不是 下划线,则该字符将添加到输出字符串中。如果它是下划线,则不添加该字符,而是应将 c[i+1] 更改为大写,以便在下一个迭代器中添加。
public static String zebulansNightmare(final String functionName) {
String manip = "";
char[] c = functionName.toCharArray();
for(int i = 0; i < c.length; i++){
if(c[i]!='_'){
manip += c[i];
} else {
Character.toUpperCase(c[i+1]);
}
}
return manip;
}
我已经包含了调试过程图片的链接。
【问题讨论】:
-
Character.toUpperCase(c[i+1]);实际上并没有改变c[i+1]:它只是返回大写的char。此外,更改因调用String.toCharArray()而产生的char[]不会更改字符串。你需要return new String(c);。 -
char是一个原语 - 这使它不可变。Character.toUpperCase(c[i+1])返回一个新的char,它是传入的char的大写版本 - 你丢弃它。 -
@AndyTurner 我相信 OP 想将 some_snake_case_string 更改为大写字符串。
标签: java arrays string character uppercase