需要用另一个特定字母替换输入文本的每个字母

时间:2013-03-05 03:11:21

标签: java string str-replace

我需要创建一个带有originalText的程序,并用new特定字母替换originalText中的每个字母,然后将其打印为mixedLetterText。

这就是我所拥有的,但它仅适用于第一个“String mixedLetterText = originalText.replace('a','w');”并且不会更改任何其他字母。我对这一切都很陌生,只是不知道出了什么问题......无论如何,谢谢!请帮忙。

public class MixLettersAndNumbers
{

    public static void main(String[] args)

    {
        String originalText = "as we walk";


        String mixedLetterText = 
        originalText.replace('a', 'w');
        originalText.replace('s', 'e');
        originalText.replace('d', 'r');
        originalText.replace('f', 't');
        originalText.replace('g', 'y');
        originalText.replace('h', 'u');
        originalText.replace('j', 'i');
        originalText.replace('k', 'o');
        originalText.replace('l', 'p');
        originalText.replace('z', 's');
        originalText.replace('x', 'd');
        originalText.replace('c', 'f');
        originalText.replace('v', 'g');
        originalText.replace('b', 'h');
        originalText.replace('n', 'j');
        originalText.replace('m', 'k');   
        originalText.replace('q', '1');
        originalText.replace('w', '2');
        originalText.replace('e', '3');
        originalText.replace('r', '4');
        originalText.replace('t', '5');
        originalText.replace('y', '6');
        originalText.replace('u', '7');
        originalText.replace('i', '8');
        originalText.replace('o', '9');
        originalText.replace('p', '0');

        //test it out
        System.out.println("original = " + originalText);
        System.out.println("mixed = " + mixedLetterText);
    }
}

3 个答案:

答案 0 :(得分:2)

替换所有(类似)行:

originalText.replace('h', 'u');

为:

originalText = originalText.replace('h', 'u');

replace()函数将返回修改后的文本版本。

最后,变量originalText将包含文本的修改版本。

也就是说,

// no need to use mixedLetterText if you are not intended to keep originalText
originalText = originalText.replace('a', 'w');
originalText = originalText.replace('s', 'e');
originalText = originalText.replace('d', 'r');
originalText = originalText.replace('f', 't');
originalText = originalText.replace('g', 'y');

......等等

答案 1 :(得分:1)

这是Java还是JavaScript? Java就像狼一样对待仓鼠。

无论如何,你的代码字面上说“将第一个替换分配给mixedLetterText,然后逐个计算所有其他替换并将它们扔掉”。

根据您希望的工作方式,您可以直接链接替换项:

String mixedLetterText = originalText
       .replace('a','w').replace('s','e')........

但是,请记住,如果您有交叉,则可能会遇到问题。例如,如果您的代码在链中,如果输入为g,那么输出将为6,而不是您期望的y

如果您使用的是Java,那么this question将帮助您找到执行转换的功能。如果是Java 脚本,那么this function将有所帮助。

答案 2 :(得分:0)

在您的代码中,您只是尝试更改原始文本一次。 进行这些更改

String  mixedLetterText=originalText.replace('s', 'e');
mixedLetterText=originalText.replace('d', 'r');
mixedLetterText=originalText.replace('f', 't');
mixedLetterText=originalText.replace('g', 'y');
mixedLetterText=originalText.replace('h', 'u');
mixedLetterText=originalText.replace('j', 'i');
mixedLetterText=originalText.replace('k', 'o');
mixedLetterText= originalText.replace('l', 'p');
mixedLetterText=originalText.replace('z', 's');
mixedLetterText=originalText.replace('x', 'd');
mixedLetterText=originalText.replace('c', 'f');
mixedLetterText=originalText.replace('v', 'g');
mixedLetterText=originalText.replace('b', 'h');
mixedLetterText=originalText.replace('n', 'j');
mixedLetterText=originalText.replace('m', 'k');   
mixedLetterText=originalText.replace('q', '1');
mixedLetterText=originalText.replace('w', '2');
mixedLetterText=originalText.replace('e', '3');
mixedLetterText=originalText.replace('r', '4');
mixedLetterText=originalText.replace('t', '5');
mixedLetterText=originalText.replace('y', '6');
mixedLetterText=originalText.replace('u', '7');
mixedLetterText=originalText.replace('i', '8');
mixedLetterText=originalText.replace('o', '9');
mixedLetterText=originalText.replace('p', '0');