将字符串中的字母提升为java中的上一个字母

时间:2017-04-18 19:21:12

标签: java

我的方法基于此链接Promoting letters in a string to next letter in java

public static void main(String[] args) {

    int shiftValue = 5;
    String foo = "abcdefxyz";
    String bar = "";

    for (char c : foo.toCharArray()) {
       bar += Character.toString((char) (((c - 'a' - shiftValue) % 26) 
       + 'a'));
    }

    System.out.println(bar);
}

和输出: Output

我如何获得输出" yzabc"而不是" _`abc" ?

1 个答案:

答案 0 :(得分:1)

你可以简单地向左移动2,并确保捕捉到负面的情况(在这种情况下,a和b)。所以在你的for循环中,使用它(我希望很长但很容易阅读):

        switch (c) {
            case 'a':
                bar += 'y';
                break;
            case 'b':
                bar += 'z';
                break;
            default:
                bar += (char) (c - 2);
        }

或者,如果你想缩短

bar += c > 'b' ? (char) (c-2) : (char) (c+24);

说明:如果字符大于b,则可以减去2(例如c-2 = a),否则加24(例如a + 24 = y)