将String更改为altCase

时间:2016-03-13 23:50:28

标签: java string char

我正在尝试编写将给定字符串更改为alt case的代码。

"hello" ---> "HeLlO"
"legend of zelda" ---> "LeGeNd oF ZeLdA"

这是我到目前为止所做的:

public String altCase(String text) {
    String replace = "";

    for (int i = 0; i < text.length(); i++) {
        if (i % 2 == 0) {
            replace = text.replace(Character.toString(text.charAt(i)),
                    Character.toString(text.charAt(i)).toLowerCase());
        } else {
            replace = text.replace(Character.toString(text.charAt(i)),
                    Character.toString(text.charAt(i)).toUpperCase());
        }
    }

    return replace;
}

replace变成text,其他任何变化都没有。

造成这种情况的原因是什么,以及如何解决?

2 个答案:

答案 0 :(得分:1)

试试这个:

public String altCase(String text)
{
    String replace = "";

    for(int i = 0; i < text.length(); i++)
    {
        if(i%2 == 0)
        {
            replace += Character.toString(text.charAt(i)).toLowerCase());
        }
        else
        {
            replace += Character.toString(text.charAt(i)).toUpperCase());
        }
    }

    return replace;
}

只需将小写字母或大写字符附加到现有字符串即可。我也看看StringBuilder。见here

答案 1 :(得分:1)

简单的代码:

  • 将所有内容都改为小写
  • 将所有其他字母翻转为大写
  • 使用StringBuilder使代码更简单

然后它只是几行,如下:

public static String altCase(String text){
    StringBuilder result = new StringBuilder(text.toLowerCase());
    for(int i = 0; i < text.length(); i+= 2)
        result.setCharAt(i, Character.toUpperCase(text.charAt(i)));
    return result.toString();
}

注意我不会将字符转换为字符串然后调用toUpperCase(),我直接在字符上调用实用程序方法Character.toUpperCase()