基本上我想递归地得到这个:
“也许我已经写了一个像这样的句子”
看起来像这样:
“也许我已经写过像这样的句子”
- n>每个单词之前、之间和之后各有 0 个空格
- 任何大小写字母组合 例如:“喜欢这个”
我认为我理解的内容:
- 使用
string.charAt(i)
将特定字符与空格进行比较 - 使用
Character.isUpperCase()
进行大小写检查
我不明白的地方:
由于字符串是不可变的,因此递归如何更改字符串
基本情况是什么
如何在第一个单词之后仅将每个单词的第一个字母大写
编辑: 这是我在一些有用的提示后得出的结论: `public static String toCamelCase(String str) {
if(str.length() == 1) {
if(str.charAt(0) == ' ') {
return "";
} else {
return str;
}
} else if(str.charAt(0) == ' ' && str.length() != 1) {
if(str.charAt(1) != ' ') {
return str.substring(1, 2).toUpperCase() + toCamelCase(str.substring(2, str.length()));
} else {
return toCamelCase(str.substring(1, str.length()));
}
} else if(str.charAt(0) != ' ' && str.length() != 1) {
if(str.charAt(1) != ' ') {
return str.substring(0,2).toLowerCase() + toCamelCase(str.substring(2, str.length()));
} else {
return str.substring(0,1).toLowerCase() + toCamelCase(str.substring(1, str.length()));
}
}
return str;
}`
除了第一个单词的第一个字母也大写之外,一切正常。当大写单词的第一个字母时,如何使代码排除第一个单词?这可以递归吗?
最佳答案
这就是你的递归实现:
public String camelCase(String inputStr) {
String s = inputStr.toLowerCase();
String[] arr = s.split(" ");
s = arr[0];
return getCamelCased(s,1,arr);
}
private String getCamelCased(String s, int index, String[] arr) {
if(index >= arr.length)
return s;
String curr = arr[index++];
s += curr.length()==1?curr.toUpperCase():
(curr.toUpperCase.charAt(0)+curr.substring(1,curr.length()));
return getCamelCased(s,index,arr);
}
关于java - 递归地将给定字符串转换为驼峰式大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655817/