为了账号安全,请及时绑定邮箱和手机立即绑定

用自定义字母替换字符串中的字符

用自定义字母替换字符串中的字符

慕雪6442864 2022-03-10 15:57:29
我编写了这段代码,用自定义提供的字母替换字符串中的字符://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 循环?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

对于小写使用这个:


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


查看完整回答
反对 回复 2022-03-10
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

策略模式可以为您节省大量时间并为您提供最大的灵活性。假设我们定义一个AlphabetConverter接口,如下:


@FunctionalInterface

interface AlphabetConverter {

    String convert(char ch);

}

然后,将convertAlphabet接受 的方法定义AlphabetConverter为:


public String convertAlphabet(String actual, AlphabetConverter converter) {

    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < actual.length(); i++) {

        sb.append(converter.convert(actual.charAt(i)));

    }

    return sb.ToString();

}

现在,您可以实现AlphabetConverter,一个用于替换String字母表,一个用于int数组,甚至可以使用 lambda 函数。


查看完整回答
反对 回复 2022-03-10
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号