2013-03-05 6 views
0

Мне нужно создать программу, которая берет оригиналText и заменяет каждую букву в оригиналеText новой специальной буквой, а затем печатает ее как 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); 
    } 
} 
+0

Возможно ли, что это ошибочно? выглядит как Java, а не javascript. –

+0

Согласитесь, это не JavaScript. Я не знаком с Java, но кажется, что вам нужно было бы поставить 'String mixedLetterText =' перед каждым оператором replace. Хотя я уверен, что у кого-то есть лучшее решение. –

ответ

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'); 

... и так далее

+0

это работало, но @kolink по-прежнему правы, что некоторые из них не работают, потому что они повторяются. Есть ли быстрое решение для этого? – LucasA618

+0

есть. переупорядочить порядок замены – Raptor

1

Является ли это Java или JavaScript? Java - это JavaScript, поскольку ветчина для хомяка.

В любом случае, ваш код буквально говорит «назначьте первую замену mixedLetterText, а затем вычислите все остальные замены один за другим и выбросьте их».

В зависимости от того, как вы хотите работать, вы можете либо просто цепь замен:

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

Однако, имейте в виду, что если у вас есть кроссоверы, вы можете иметь проблемы. Например, с вашим кодом в цепочке, если вход g, тогда выход будет 6, а не y, как и следовало ожидать.

Если вы работаете на Java, то this question поможет найти функцию для преобразования. Если это Java Сценарий, то this function поможет.

+0

Вы правы ... g делает печать 6 не y. любой способ быстро исправить это? – LucasA618

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'); 
+0

это неверно. эффективна только последняя строка. – Raptor

+0

да, вы правы, я забыл назначить его снова той же строке – Prakash

Смежные вопросы