如何将字符串中的每个其他字符转换为大写

时间:2017-12-14 07:56:32

标签: java type-conversion

我目前有一个作业,我们将整个(瑞典语)字母表用小写字母作为字符串,我们应该将每个其他字符转换为大写字母。这就是我现在所处的位置:

public static void main(String[] args) {
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
    System.out.println(alphabet);
    for (int i = 0; i < 29; i = i + 2) {
        char result = alphabet.charAt(i);
        alphabet.toUpperCase(result);
    }
    System.out.println(alphabet);
}

现在的问题是alphabet.toUpperCase(result);给了我一个错误,我无法将char转换为语言环境。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果你想获得char的大写,你应该使用Character.toUpperCase(c),而不是String的toUpperCase。

所以,我认为你可能正在寻找这样的东西:

public static void main(String[] args) {
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
    System.out.println(alphabet);

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < alphabet.length(); i++) {
        char c = alphabet.charAt(i);
        sb.append(i % 2 == 0 ? Character.toUpperCase(c) : c);
    }
    String result = sb.toString();
    System.out.println(result);
}

输出:

  

abcdefghijklmnopqrstuvwxyzåäö

     

AbCdEfGhIjKlMnOpQrStUvWxYzÅäÖ

由于Strings是不可变的,你必须创建一个新的String来获得你想要的东西。执行此操作的有效方法是使用StringBuilder。

修改

没有StringBuilder的另一种方法,也许更直观的方法是将String转换为chars数组,这使得它变得可变。最后,您只需将其转换回String。结果如下:

public static void main(String[] args) {
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
    System.out.println(alphabet);

    char[] chars = alphabet.toCharArray();
    for (int i = 0; i < alphabet.length(); i+=2) {
        chars[i] = Character.toUpperCase(chars[i]);
    }
    String result = new String(chars);
    System.out.println(result);
}