java - 递归地将给定字符串转换为驼峰式大小写

标签 java recursion

基本上我想递归地得到这个:

“也许我已经写了一个像这样的句子”

看起来像这样:

“也许我已经写过像这样的句子”

  • 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/

相关文章:

java - 在Java中一个接一个地播放WAV文件

java - 按位运算符和单个与号

java - 泽西客户端 KeepAlive

java - Prototype Bean 中的 Autowiring

java - 使用以下递归方法时出现 java.lang.OutOfMemoryError 异常

python - 递归定位包含目标键和值的嵌套字典

java - OpenJ9 是否支持 sun.misc.Contished 注释?

php - 具有深度的多维数组的数组

c++ - 使用以 vector 为输入的递归方法时的段错误

json - jQuery:递归删除所有与给定模式匹配的键