我一直在尝试使用数组,但它似乎只是返回原始字符串。
public static String capitalizeEveryOtherWord(String x) {
x = x.toLowerCase();
x.trim();
String[] words = x.split(" ");
for(int c = 2; c < words.length; c += 2)
words[c].toUpperCase();
return Arrays.toString(words);
}
有人可以帮忙吗?
答案 0 :(得分:6)
toUpperCase()
和trim()
返回新字符串,而不是修改现有字符串。您需要将这些新字符串分配给某些内容。
public static String capitalizeEveryOtherWord(String x) {
x = x.toLowerCase();
x = x.trim();
String[] words = x.split(" ");
for (int c = 2; c < words.length; c += 2)
words[c] = words[c].toUpperCase();
return Arrays.toString(words);
}
此外,您可能打算从索引0或1开始 - 分别是第一个或第二个元素。
答案 1 :(得分:0)
Minitech已正确识别问题恕我直言,但我会使用不同的基于正则表达式的方法:
public static String capitalizeEveryOtherWord(String x) {
StringBuilder result = new StringBuilder(x);
Matcher matcher = Pattern.compile("^ *\\w|\\w* \\w+ \\w").matcher(x);
while(matcher.find())
result.setCharAt(matcher.end() - 1, Character.toUpperCase(x.charAt(matcher.end() - 1)));
return result.toString();
}
(经过测试和工作)。
答案 2 :(得分:0)
这也有效:
public class answerForStackOverflow {
public static void main(String[] args) {
String examplestring = "iwouldreallyliketothankforallthehelponstackoverflow";
String output = "";
for (int i = 0; i < examplestring.length(); i++) {
char c = examplestring.charAt(i);
if (i % 2 == 0) {
output += examplestring.substring(i, i + 1).toUpperCase();
} else {
output += examplestring.substring(i, i + 1);
}
}
System.out.println(output);
}
}