繁体   English   中英

将给定的字符串递归转换为驼峰式

[英]Converting given string to camel case recursively

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

“我给这句话写了一句话,就像这样”

看起来像这样:

“也许我有书面的喜欢这样的人”

  • 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM