我搜索可能的方法,首先将短语拆分为单词并收集在数组中。而且我可以对每个单词的首字母进行转换。但是,我的功能不起作用,耗时太长。
这是我的实施。
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;
}
还有其他解决方案,以便我可以正确地分割我的短语吗? 感谢。
答案 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();
}
}