Java “更改字符串的更好方法”;abc..z";至;bcd..a“是什么;?

Java “更改字符串的更好方法”;abc..z";至;bcd..a“是什么;?,java,string,format,token,Java,String,Format,Token,我创建了这段代码,用于查看字符串标记并对其进行格式化,以便每个字符都按一个字符移动。字符均为小写,从a到z。 所以如果我的输入是 abcz 输出为 bcda 现在我将所有字母表添加到arraylist中,代码确定每个字符的索引并向其中添加一个。若找到z,它将打印一个,这样arraylist的索引就不会超出范围 List<String> letters = new ArrayList<String>(); String alp = "abcdefghijk

我创建了这段代码,用于查看字符串标记并对其进行格式化,以便每个字符都按一个字符移动。字符均为小写,从a到z。

所以如果我的输入是
abcz
输出为
bcda

现在我将所有字母表添加到arraylist中,代码确定每个字符的索引并向其中添加一个。若找到z,它将打印一个,这样arraylist的索引就不会超出范围

List<String> letters = new ArrayList<String>(); 
        String alp = "abcdefghijklmnopqrstuvwxyz";
        for (int i = 0; i<26; i++)
        {
            letters.add(Character.toString(alp.charAt(i)));
        }

        String token = sc.next();
        for (int i = 0; i<token.length(); i++)
        {
            if (letters.get(letters.indexOf(Character.toString(token.charAt(i)))).equals("z"))
            {
                System.out.print("a");
            }
            else
            {
            System.out.print(letters.get(letters.indexOf(Character.toString(token.charAt(i)))+1));
            }
        }
List letters=new ArrayList();
字符串alp=“abcdefghijklmnopqrstuvxyz”;

对于(inti=0;i一个简单的循环加上一点模运算就可以了,为什么还要处理这么多对象呢

for(int i = 0; i < token.length(); ++i) {
    System.out.print(('a' + (token.charAt(i) + 1 - 'a')%('z' - 'a' + 1)));
}
for(int i=0;i

我们将偏移量从
'a'
增加1,然后取余数模26,得到0到25之间的偏移量。

一个简单的循环加上一点模运算就可以了,为什么要处理这么多对象呢

for(int i = 0; i < token.length(); ++i) {
    System.out.print(('a' + (token.charAt(i) + 1 - 'a')%('z' - 'a' + 1)));
}
for(int i=0;i
我们将偏移量从
'a'
增加1,并取余数模26,以获得0到25范围内的偏移量。

有一种实用方法可以为您做到这一点:

StringUtils.replaceChars(input, "abcdefghijklmnopqrstuvwxyz", "bcdefghijklmnopqrstuvwxyza");
虽然有这么大的参数,但它看起来有点丑陋

尽管如此,它只是一行代码,我认为最好的代码是其他人的代码(这意味着,如果有库可以这样做,就倾向于使用它)。

有一种实用方法可以为您做到这一点:

StringUtils.replaceChars(input, "abcdefghijklmnopqrstuvwxyz", "bcdefghijklmnopqrstuvwxyza");
虽然有这么大的参数,但它看起来有点丑陋


尽管如此,这只是一行代码,我认为最好的代码是其他人的代码(这意味着,如果有库可以这样做,就倾向于使用它).

那么你的问题是什么?你想要什么样的改进:更少的代码,更好的性能,更好的编码风格?你的实现有没有遇到任何问题?上下文是什么,你需要这个函数做什么?那么你的问题是什么?你想要什么样的改进:更少的代码,更好的性能,等等ter编码风格?您的实现是否遇到任何问题?上下文是什么,您需要此函数做什么?Troo dat,但26较短。但是@vladr的解决方案允许更大的灵活性,例如,如果他想将其升级到rot13或类似的更“高级”的版本encryption.Troo dat,但26较短。但@vladr的解决方案允许更大的灵活性,例如,如果他想将其升级到rot13或类似的更“高级”加密。