我正在编写一个程序,它接收一个字符串作为输入并更改字母的格式(如果它包含下划线)。例如,如果我收到字符串“here_wego”,它应该返回“thisWego”,但是我只是在“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;
}
我已经包含了一个调试过程图片的链接。
Going through the program debugging
'Character.toUpperCase(C [1 + 1] );'实际上并没有改变'c [i + 1]':它只是返回大写的'char'。另外,更改由于调用String.toCharArray()而导致的'char []'不会更改该字符串。你需要'返回新的字符串(c);'。 –
'char'是一个原语 - 这使得它不可变。 'Character.toUpperCase(c [i + 1])'返回一个新的'char',它是传入的'char'的大写版本 - 你放弃这个。 –
@AndyTurner我相信OP想要将some_snake_case_string改成一个Upper Upper Cased String。 –