java - 用自定义字母替换字符串中的字符
问题描述
我编写了这段代码,用自定义提供的字母替换字符串中的字符:
//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 循环?
解决方案
对于小写使用这个:
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
推荐阅读
- java - 为什么这个 Java Page Printing 代码如此缓慢,还有其他替代方法吗?
- c# - Index of Array2D out of limit while reading txt File
- python - 如何使 Python CGI 脚本将用户输入捕获为变量
- c# - 使用构造函数获取形式参数错误
- hibernate - JPA+Hiberante how to delete entities on multiple dependencies
- fedora - Fedora 27 上的 VNC 黑屏与 mate 桌面
- mariadb - 尝试mysqldump时出现“未知变量'key_buffer_size = 256M'”
- javascript - JsGrid将嵌套对象加载到表中
- php - 使用 PHP 在 switch case 中打印数组
- vba - conditional highlighting based on values