首页 > 解决方案 > 用自定义字母替换字符串中的字符

问题描述

我编写了这段代码,用自定义提供的字母替换字符串中的字符:

//Replaces characters in string with custom alphabet.
public static String getStringWithCustomAlphabet(String string, String customAlphabet){
    String shiftedString = "";

    //Loop through every character in @plainText
    for (int i = 0; i < string.length(); i++) {

        //Store current character of loop in @charToAdd
        char charToAdd = string.charAt(i);

        int index = getAlphabet().indexOf(charToAdd);

        //If index is valid
        if (index != -1) charToAdd = customAlphabet.charAt(index);

        //Add the character to @cipherText
        shiftedString += charToAdd;
    }

    return shiftedString;
}

public static String getAlphabet() {
    return "abcdefghijklmnopqrstuvwxyz ";
}

此代码有效。但是,我不仅希望能够使用字符串字母表,还希望能够使用整数字母表。因此,例如:

int[] numberArray {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};
getStringWithCustomAlphabet("abcxyz", numberArray); //Should return 0,1,2,23,24,25

也许有一些方法可以简化这段代码而不使用 for 循环?

标签: java

解决方案


对于小写使用这个:

String str = "abcdef";
char[] ch  = str.toCharArray();
for (char c : ch) {
   int temp = (int) c;
   int temp_integer = 96; //for lower case
   if (temp <= 122 & temp >= 97)
      System.out.print(temp-temp_integer);
}

输出将是 -:123456

对于大写:

String str = "DEFGHI";
char[] ch  = str.toCharArray();
for (char c : ch) {
   int temp = (int) c;
   int temp_integer = 64; //for upper case
   if (temp <= 90 & temp >= 65)
      System.out.print(temp-temp_integer);
}

输出将是 -:456789


推荐阅读