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

Java 如何将字符串短语中每个单词的首字母转换为大写?,java,arrays,string,parsing,Java,Arrays,String,Parsing,我搜索可能的方法,首先将短语拆分为单词并收集在数组中。我可以转换每个单词的首字母。但是,我的函数不起作用,并且花费的时间太长 这是我的实现。 public String toUpCase(String phrase) { String[] words = phrase.split(""); String output = ""; for(int i=0; i < words.length; i++) {

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

这是我的实现。

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;

publicstringtoupcase(字符串短语)
{
字符串[]单词=短语。拆分(“”);
字符串输出=”;
for(int i=0;i
}

有没有其他解决办法,让我可以正确地拆分我的短语?
谢谢。

您可以使用方法。

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

(1) 用空格分隔短语,即单词数组

(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 
    }
公共静态字符串toUpCase(字符串短语){
//用空格分隔短语
字符串[]单词=短语。拆分(“”);
//使用StringBuilder附加字符串
StringBuilder输出=新的StringBuilder();
//循环单词数组
for(int i=0;i
我无法理解在最后一个单词后使用空格的意思

因为我们用空格分隔短语,所以
单词
数组的元素中不包含空格,所以我们只需再次为每个单词添加空格



另外,在执行字符串操作时,尤其是在循环内部,始终使用
StringBuilder
……谢谢,但是我已经尝试过了,但是我的编译器没有返回结果,导致CPU溢出。你不应该在for循环中有while循环。尤其不是无限的。在循环中,你需要做的就是将单词的第一个字母大写,然后将结果添加到输出中。我永远不知道如何将这些答案的格式设置为x.x,但这些代码是否适合你?如果不是,为什么不呢?是的,但是当它位于数组的最后一个元素上,即短语的最后一个单词时,它会在最后一个单词后面加一个空格。那么,我该如何防止这种情况呢?如果你使用JavaGuy使用的for循环,你可以在append(“”)之前放一个if语句,如果它是循环的最后一次迭代,那么它就会跳过它。这是非常有用的信息,但我无法理解在最后一个单词之后使用空格的想法。你已经用空格对数组进行了拆分,因此您丢失了空间,即数组元素中没有空间,因此您需要为每个单词重新添加空间,清楚吗?用您的问题更新了我的答案,如果有帮助,您可以接受我的答案
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();
    }
}