我是Java的初学者 在执行任务时 我遇到了一个问题 代码本身将单词riverrrrr r small更改为R large
import java.lang.StringBuilder;
import java.util.Arrays;
class Solution {
static String toCamelCase(String s) {
if (s.contains("_")) {
s = s.replace("_", "-");
}
String[] list = s.split("-");
String nowa = "";
String result = "";
String result1 = "";
System.out.println(Arrays.toString(list));
for (int i = 0; i < list.length; i++) {
if (Character.isUpperCase(list[0].charAt(0))) {
nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
result += nowa;
System.out.println(nowa);
result1 = result;
}
if (Character.isLowerCase(list[0].charAt(0))) {
nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
result += nowa;
result1 = result.replace(result.charAt(0), result.toLowerCase().charAt(0));
}
}
return result1;
}
}
为什么在RiverRRRRR上更改riverrrrr?我只想要Riverrrrr,为什么rrrrr是大写的?
答案 0 :(得分:3)
公共字符串replace(char oldChar,char newChar)它将替换所有匹配的字符
返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar的结果。
使用replaceFirst()
public String replaceFirst(String regex, String replacement)
用给定的替换替换该字符串的第一个子字符串,该子字符串与给定的正则表达式匹配。
在您的代码中将其更改为
nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
此
nowa = list[i].replaceFirst(String.valueOf(list[i].charAt(0)), String.valueOf(list[i].toUpperCase().charAt(0)));
输入: "lake_riverrrr"
输出: lakeRiverrrr
答案 1 :(得分:2)
由于您的if
语句中有:
nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
将第一个字符的每个实例替换为大写版本。
如果您只想大写第一个字母,则只取第一个字母的substring
,在其上使用toUpperCase()
并将其添加到其余字母的substring
中字。或者,您可以使用replaceFirst
只替换第一个字母