字符串短语中每个单词的首字母如何转换为大写?

时间:2017-04-09 17:16:46

标签: java arrays string parsing

我搜索可能的方法,首先将短语拆分为单词并收集在数组中。而且我可以对每个单词的首字母进行转换。但是,我的功能不起作用,耗时太长。

这是我的实施。

 

public String toUpCase(String phrase) { String[] words = phrase.split(""); String output = ""; for(int i=0; i < words.length; i++) { while(i != words.length-1){ output += Character.toUpperCase(words[i].charAt(0)) + words[i].substring(1) + " "; } output += Character.toUpperCase(words[words.length-1].charAt(0)) + words[words.length-1].substring(1); } return output;

}

还有其他解决方案,以便我可以正确地分割我的短语吗? 感谢。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

您没有使用空格分隔符拆分单词,并且循环内部的逻辑也不正确,您需要按照以下步骤操作:

(1)用空格分割短语,即单词array

(2)迭代每个单词

(3)使用Character.toUpperCase

大写第一个字符

(4)从索引1获取剩余的单词

(5)每个单词的后缀空格

您可以使用内联注释参考以下代码:

public static String toUpCase(String phrase) {
        //split the phrase with space
        String[] words = phrase.split(" ");

        //Use StringBuilder to append the strings
        StringBuilder output = new StringBuilder();

        //loop the words array
        for(int i=0; i < words.length; i++) {
            String temp = words[i];
            output.append(Character.
               toUpperCase(temp.charAt(0))).//convert the first char to uppercase
                append(temp.substring(1)).//get the string from index 1
                append(" ");//append space for each word
        }
        return output.toString();//convert stringbuilder to string 
    }
  

我无法理解在最后一个词之后使用空格?

因为我们将短语与空格分开,所以words数组的元素不会包含空格,所以我们只需要为每个单词添加空格。

此外,在使用字符串操作时始终使用StringBuilder,尤其是在循环内部。

答案 2 :(得分:0)

class something {
    String toUpCase(String phrase) {
        String[] words = phrase.split(" ");
        StringBuilder output = new StringBuilder();

        for (String word : words) {
            output.append(Character.toUpperCase(word.charAt(0)))
            .append(word.substring(1))
            .append(" ");
        }

        return output.toString();
    }
}