将字符串中的每个其他单词大写

时间:2014-10-24 01:39:24

标签: java

我一直在尝试使用数组,但它似乎只是返回原始字符串。

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

有人可以帮忙吗?

3 个答案:

答案 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);
    }
}