Декодер и кодировщик шифров AS3 (лучший ответ?)

Вчера вечером мой младший брат спросил меня, можно ли написать программу, которая заменяла бы каждую букву на другую букву в алфавите, превращала бы ее в код, а также возвращала бы ее в нормальное состояние.

Поэтому я сделал это: http://www.skyetheguy.com/novatranslationtool

И, судя по всему, он выполняет свою работу, но мне кажется, что с точки зрения кода он неуклюжий, и мне бы очень хотелось улучшить свои знания о таких вещах, как циклы...

РЕДАКТИРОВАТЬ: Вышеприведенное с тех пор было обновлено удивительным ответом DodgerThud и работает как сон. : ) Мечты сбываются!

Кроме того, это очень журавль в небе, но было бы замечательно заставить это работать с вещами длиной более двух символов. Мой код определенно не сделал бы этого вообще. Но, вы знаете, все эти забавные коды с апострофами в них... хорошая штука!

stop();

// SET-UP STUFF
inputText.alpha = .5;
outputText.alpha = .5;
inputText.borderColor = 0xCCCCCC;
outputText.borderColor = 0xCCCCCC;
var textinProgress:String;
textinProgress = inputText.text;
if (textinProgress.charAt(0) == "\r") {
    inputText.text = "";
}
stage.addEventListener(Event.ENTER_FRAME, refresh_frame1);
function refresh_frame1(e:Event):void {
    inputScroll.update();
    outputScroll.update();
}
// ORIGINAL ALPHABET
var letters_aArray:Array = new Array();
letters_aArray[0] = "a";
letters_aArray[1] = "b";
letters_aArray[2] = "c";
letters_aArray[3] = "d";
letters_aArray[4] = "e";
letters_aArray[5] = "f";
letters_aArray[6] = "g";
letters_aArray[7] = "h";
letters_aArray[8] = "i";
letters_aArray[9] = "j";
letters_aArray[10] = "k";
letters_aArray[11] = "l";
letters_aArray[12] = "m";
letters_aArray[13] = "n";
letters_aArray[14] = "o";
letters_aArray[15] = "p";
letters_aArray[16] = "q";
letters_aArray[17] = "r";
letters_aArray[18] = "s";
letters_aArray[19] = "t";
letters_aArray[20] = "u";
letters_aArray[21] = "v";
letters_aArray[22] = "w";
letters_aArray[23] = "x";
letters_aArray[24] = "y";
letters_aArray[25] = "z";
// NEW ALPHABET
var letters_bArray:Array = new Array();
letters_bArray[0] = "m";
letters_bArray[1] = "n";
letters_bArray[2] = "b";
letters_bArray[3] = "v";
letters_bArray[4] = "c";
letters_bArray[5] = "x";
letters_bArray[6] = "z";
letters_bArray[7] = "l";
letters_bArray[8] = "k";
letters_bArray[9] = "j";
letters_bArray[10] = "h";
letters_bArray[11] = "g";
letters_bArray[12] = "f";
letters_bArray[13] = "d";
letters_bArray[14] = "s";
letters_bArray[15] = "a";
letters_bArray[16] = "p";
letters_bArray[17] = "o";
letters_bArray[18] = "i";
letters_bArray[19] = "u";
letters_bArray[20] = "y";
letters_bArray[21] = "t";
letters_bArray[22] = "r";
letters_bArray[23] = "e";
letters_bArray[24] = "w";
letters_bArray[25] = "q";
// ENCODE BUTTON
encode_btn.addEventListener(MouseEvent.CLICK, encode_btnclick);

function encode_btnclick(event:MouseEvent):void
{
    textinProgress = inputText.text;
    outputText.text = "";
    for (var b=0; b<textinProgress.length; b++) {
        if (textinProgress.charAt(b).search(letters_aArray[0]) == 0) {
            outputText.appendText(letters_bArray[0]);
        } else if (textinProgress.charAt(b).search(letters_aArray[0].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[0].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[1]) == 0) {
            outputText.appendText(letters_bArray[1]);
        } else if (textinProgress.charAt(b).search(letters_aArray[1].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[1].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[2]) == 0) {
            outputText.appendText(letters_bArray[2]);
        } else if (textinProgress.charAt(b).search(letters_aArray[2].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[2].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[3]) == 0) {
            outputText.appendText(letters_bArray[3]);
        } else if (textinProgress.charAt(b).search(letters_aArray[3].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[3].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[4]) == 0) {
            outputText.appendText(letters_bArray[4]);
        } else if (textinProgress.charAt(b).search(letters_aArray[4].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[4].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[5]) == 0) {
            outputText.appendText(letters_bArray[5]);
        } else if (textinProgress.charAt(b).search(letters_aArray[5].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[5].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[6]) == 0) {
            outputText.appendText(letters_bArray[6]);
        } else if (textinProgress.charAt(b).search(letters_aArray[6].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[6].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[7]) == 0) {
            outputText.appendText(letters_bArray[7]);
        } else if (textinProgress.charAt(b).search(letters_aArray[7].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[7].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[8]) == 0) {
            outputText.appendText(letters_bArray[8]);
        } else if (textinProgress.charAt(b).search(letters_aArray[8].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[8].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[9]) == 0) {
            outputText.appendText(letters_bArray[9]);
        } else if (textinProgress.charAt(b).search(letters_aArray[9].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[9].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[10]) == 0) {
            outputText.appendText(letters_bArray[10]);
        } else if (textinProgress.charAt(b).search(letters_aArray[10].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[10].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[11]) == 0) {
            outputText.appendText(letters_bArray[11]);
        } else if (textinProgress.charAt(b).search(letters_aArray[11].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[11].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[12]) == 0) {
            outputText.appendText(letters_bArray[12]);
        } else if (textinProgress.charAt(b).search(letters_aArray[12].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[12].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[13]) == 0) {
            outputText.appendText(letters_bArray[13]);
        } else if (textinProgress.charAt(b).search(letters_aArray[13].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[13].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[14]) == 0) {
            outputText.appendText(letters_bArray[14]);
        } else if (textinProgress.charAt(b).search(letters_aArray[14].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[14].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[15]) == 0) {
            outputText.appendText(letters_bArray[15]);
        } else if (textinProgress.charAt(b).search(letters_aArray[15].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[15].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[16]) == 0) {
            outputText.appendText(letters_bArray[16]);
        } else if (textinProgress.charAt(b).search(letters_aArray[16].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[16].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[17]) == 0) {
            outputText.appendText(letters_bArray[17]);
        } else if (textinProgress.charAt(b).search(letters_aArray[17].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[17].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[18]) == 0) {
            outputText.appendText(letters_bArray[18]);
        } else if (textinProgress.charAt(b).search(letters_aArray[18].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[18].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[19]) == 0) {
            outputText.appendText(letters_bArray[19]);
        } else if (textinProgress.charAt(b).search(letters_aArray[19].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[19].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[20]) == 0) {
            outputText.appendText(letters_bArray[20]);
        } else if (textinProgress.charAt(b).search(letters_aArray[20].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[20].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[21]) == 0) {
            outputText.appendText(letters_bArray[21]);
        } else if (textinProgress.charAt(b).search(letters_aArray[21].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[21].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[22]) == 0) {
            outputText.appendText(letters_bArray[22]);
        } else if (textinProgress.charAt(b).search(letters_aArray[22].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[22].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[23]) == 0) {
            outputText.appendText(letters_bArray[23]);
        } else if (textinProgress.charAt(b).search(letters_aArray[23].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[23].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[24]) == 0) {
            outputText.appendText(letters_bArray[24]);
        } else if (textinProgress.charAt(b).search(letters_aArray[24].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[24].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_aArray[25]) == 0) {
            outputText.appendText(letters_bArray[25]);
        } else if (textinProgress.charAt(b).search(letters_aArray[25].toUpperCase()) == 0) {
            outputText.appendText(letters_bArray[25].toUpperCase());
        } else if (textinProgress.charAt(b) == "\r") {
            outputText.appendText("\n");
        } else {
            outputText.appendText(textinProgress.charAt(b));
        }
    }
}
// DECODE BUTTON
decode_btn.addEventListener(MouseEvent.CLICK, decode_btnclick);

function decode_btnclick(event:MouseEvent):void
{
    textinProgress = inputText.text;
    outputText.text = "";
    for (var b=0; b<textinProgress.length; b++) {
        if (textinProgress.charAt(b).search(letters_bArray[0]) == 0) {
            outputText.appendText(letters_aArray[0]);
        } else if (textinProgress.charAt(b).search(letters_bArray[0].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[0].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[1]) == 0) {
            outputText.appendText(letters_aArray[1]);
        } else if (textinProgress.charAt(b).search(letters_bArray[1].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[1].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[2]) == 0) {
            outputText.appendText(letters_aArray[2]);
        } else if (textinProgress.charAt(b).search(letters_bArray[2].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[2].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[3]) == 0) {
            outputText.appendText(letters_aArray[3]);
        } else if (textinProgress.charAt(b).search(letters_bArray[3].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[3].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[4]) == 0) {
            outputText.appendText(letters_aArray[4]);
        } else if (textinProgress.charAt(b).search(letters_bArray[4].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[4].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[5]) == 0) {
            outputText.appendText(letters_aArray[5]);
        } else if (textinProgress.charAt(b).search(letters_bArray[5].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[5].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[6]) == 0) {
            outputText.appendText(letters_aArray[6]);
        } else if (textinProgress.charAt(b).search(letters_bArray[6].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[6].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[7]) == 0) {
            outputText.appendText(letters_aArray[7]);
        } else if (textinProgress.charAt(b).search(letters_bArray[7].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[7].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[8]) == 0) {
            outputText.appendText(letters_aArray[8]);
        } else if (textinProgress.charAt(b).search(letters_bArray[8].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[8].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[9]) == 0) {
            outputText.appendText(letters_aArray[9]);
        } else if (textinProgress.charAt(b).search(letters_bArray[9].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[9].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[10]) == 0) {
            outputText.appendText(letters_aArray[10]);
        } else if (textinProgress.charAt(b).search(letters_bArray[10].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[10].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[11]) == 0) {
            outputText.appendText(letters_aArray[11]);
        } else if (textinProgress.charAt(b).search(letters_bArray[11].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[11].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[12]) == 0) {
            outputText.appendText(letters_aArray[12]);
        } else if (textinProgress.charAt(b).search(letters_bArray[12].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[12].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[13]) == 0) {
            outputText.appendText(letters_aArray[13]);
        } else if (textinProgress.charAt(b).search(letters_bArray[13].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[13].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[14]) == 0) {
            outputText.appendText(letters_aArray[14]);
        } else if (textinProgress.charAt(b).search(letters_bArray[14].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[14].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[15]) == 0) {
            outputText.appendText(letters_aArray[15]);
        } else if (textinProgress.charAt(b).search(letters_bArray[15].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[15].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[16]) == 0) {
            outputText.appendText(letters_aArray[16]);
        } else if (textinProgress.charAt(b).search(letters_bArray[16].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[16].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[17]) == 0) {
            outputText.appendText(letters_aArray[17]);
        } else if (textinProgress.charAt(b).search(letters_bArray[17].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[17].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[18]) == 0) {
            outputText.appendText(letters_aArray[18]);
        } else if (textinProgress.charAt(b).search(letters_bArray[18].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[18].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[19]) == 0) {
            outputText.appendText(letters_aArray[19]);
        } else if (textinProgress.charAt(b).search(letters_bArray[19].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[19].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[20]) == 0) {
            outputText.appendText(letters_aArray[20]);
        } else if (textinProgress.charAt(b).search(letters_bArray[20].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[20].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[21]) == 0) {
            outputText.appendText(letters_aArray[21]);
        } else if (textinProgress.charAt(b).search(letters_bArray[21].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[21].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[22]) == 0) {
            outputText.appendText(letters_aArray[22]);
        } else if (textinProgress.charAt(b).search(letters_bArray[22].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[22].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[23]) == 0) {
            outputText.appendText(letters_aArray[23]);
        } else if (textinProgress.charAt(b).search(letters_bArray[23].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[23].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[24]) == 0) {
            outputText.appendText(letters_aArray[24]);
        } else if (textinProgress.charAt(b).search(letters_bArray[24].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[24].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[25]) == 0) {
            outputText.appendText(letters_aArray[25]);
        } else if (textinProgress.charAt(b).search(letters_bArray[25].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[25].toUpperCase());
        } else if (textinProgress.charAt(b) == "\r") {
            outputText.appendText("\n");
        } else {
            outputText.appendText(textinProgress.charAt(b));
        }
    }
}
// RECODE BUTTON (scrambles, takes what's in the output and applies the cipher again)
recode_btn.addEventListener(MouseEvent.CLICK, recode_btnclick);

function recode_btnclick(event:MouseEvent):void
{
    textinProgress = outputText.text;
    outputText.text = "";
    for (var b=0; b<textinProgress.length; b++) {
        if (textinProgress.charAt(b).search(letters_bArray[0]) == 0) {
            outputText.appendText(letters_aArray[0]);
        } else if (textinProgress.charAt(b).search(letters_bArray[0].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[0].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[1]) == 0) {
            outputText.appendText(letters_aArray[1]);
        } else if (textinProgress.charAt(b).search(letters_bArray[1].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[1].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[2]) == 0) {
            outputText.appendText(letters_aArray[2]);
        } else if (textinProgress.charAt(b).search(letters_bArray[2].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[2].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[3]) == 0) {
            outputText.appendText(letters_aArray[3]);
        } else if (textinProgress.charAt(b).search(letters_bArray[3].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[3].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[4]) == 0) {
            outputText.appendText(letters_aArray[4]);
        } else if (textinProgress.charAt(b).search(letters_bArray[4].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[4].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[5]) == 0) {
            outputText.appendText(letters_aArray[5]);
        } else if (textinProgress.charAt(b).search(letters_bArray[5].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[5].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[6]) == 0) {
            outputText.appendText(letters_aArray[6]);
        } else if (textinProgress.charAt(b).search(letters_bArray[6].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[6].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[7]) == 0) {
            outputText.appendText(letters_aArray[7]);
        } else if (textinProgress.charAt(b).search(letters_bArray[7].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[7].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[8]) == 0) {
            outputText.appendText(letters_aArray[8]);
        } else if (textinProgress.charAt(b).search(letters_bArray[8].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[8].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[9]) == 0) {
            outputText.appendText(letters_aArray[9]);
        } else if (textinProgress.charAt(b).search(letters_bArray[9].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[9].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[10]) == 0) {
            outputText.appendText(letters_aArray[10]);
        } else if (textinProgress.charAt(b).search(letters_bArray[10].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[10].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[11]) == 0) {
            outputText.appendText(letters_aArray[11]);
        } else if (textinProgress.charAt(b).search(letters_bArray[11].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[11].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[12]) == 0) {
            outputText.appendText(letters_aArray[12]);
        } else if (textinProgress.charAt(b).search(letters_bArray[12].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[12].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[13]) == 0) {
            outputText.appendText(letters_aArray[13]);
        } else if (textinProgress.charAt(b).search(letters_bArray[13].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[13].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[14]) == 0) {
            outputText.appendText(letters_aArray[14]);
        } else if (textinProgress.charAt(b).search(letters_bArray[14].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[14].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[15]) == 0) {
            outputText.appendText(letters_aArray[15]);
        } else if (textinProgress.charAt(b).search(letters_bArray[15].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[15].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[16]) == 0) {
            outputText.appendText(letters_aArray[16]);
        } else if (textinProgress.charAt(b).search(letters_bArray[16].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[16].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[17]) == 0) {
            outputText.appendText(letters_aArray[17]);
        } else if (textinProgress.charAt(b).search(letters_bArray[17].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[17].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[18]) == 0) {
            outputText.appendText(letters_aArray[18]);
        } else if (textinProgress.charAt(b).search(letters_bArray[18].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[18].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[19]) == 0) {
            outputText.appendText(letters_aArray[19]);
        } else if (textinProgress.charAt(b).search(letters_bArray[19].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[19].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[20]) == 0) {
            outputText.appendText(letters_aArray[20]);
        } else if (textinProgress.charAt(b).search(letters_bArray[20].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[20].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[21]) == 0) {
            outputText.appendText(letters_aArray[21]);
        } else if (textinProgress.charAt(b).search(letters_bArray[21].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[21].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[22]) == 0) {
            outputText.appendText(letters_aArray[22]);
        } else if (textinProgress.charAt(b).search(letters_bArray[22].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[22].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[23]) == 0) {
            outputText.appendText(letters_aArray[23]);
        } else if (textinProgress.charAt(b).search(letters_bArray[23].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[23].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[24]) == 0) {
            outputText.appendText(letters_aArray[24]);
        } else if (textinProgress.charAt(b).search(letters_bArray[24].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[24].toUpperCase());
        } else if (textinProgress.charAt(b).search(letters_bArray[25]) == 0) {
            outputText.appendText(letters_aArray[25]);
        } else if (textinProgress.charAt(b).search(letters_bArray[25].toUpperCase()) == 0) {
            outputText.appendText(letters_aArray[25].toUpperCase());
        } else if (textinProgress.charAt(b) == "\r") {
            outputText.appendText("\n");
        } else {
            outputText.appendText(textinProgress.charAt(b));
        }
    }
}

Просто расскажу вам, почему я делал все эти невероятно произвольные и запутанные вещи, которые я делал...

  • Если вы выполняете любую другую обычную замену вещей, о которой здесь говорили другие люди (по крайней мере, из того, что я НАШЕЛ), вы в конечном итоге заменяете свою собственную работу в определенный момент. Например, если вы хотите, чтобы B был A, но затем вы хотите, чтобы A был C, то, если вы наберете «BA», вы получите обратно «CC» вместо «AC». Так что мой код фактически берет каждый символ и выдает их все по одному.
  • Я проделал всю эту утомительную работу с «.toUpperCase()», чтобы убедиться, что этот инструмент чувствителен к регистру — так что, если я наберу ключ в нижнем или верхнем регистре, он всегда будет генерировать нужный вместо него. Вот почему RegExp у меня не совсем работал.
  • Он также учитывает такие вещи, как разрывы строк и случайные символы, не включенные в алфавит.

Я УВЕРЕН, что есть более простые и энергоэффективные способы закодировать это, но я просто понятия не имею, как это сделать.


person HomeStarRunnerTron    schedule 30.08.2016    source источник
comment
Если ваш код работает и вы хотите узнать о передовых методах и обзоре в целом, вы также можете задать вопрос на странице Проверка кода.   -  person null    schedule 31.08.2016
comment
Большое спасибо, это именно то, что мне нужно. :)   -  person HomeStarRunnerTron    schedule 31.08.2016
comment
Убедитесь, что вы спрашиваете только то, что там по теме. Вашей идеи о том, как заменить две буквы, не будет, так как это еще не написанный код. Проверьте их справочную страницу, пожалуйста.   -  person null    schedule 31.08.2016
comment
Вот предложение вырезать много строк из вашего кода. Не используйте массивы, используйте строки и функцию indexOf в строке. то есть одна строка с abcdef.. и одна строка с заменами. Я уверен, что вы также можете упростить свои большие цепочки if, выполнив внутренний цикл длиной с алфавит.   -  person    schedule 31.08.2016


Ответы (2)


Я собираюсь расширить свой комментарий и показать вам, как можно упростить ваш код и вырезать большую его часть.

Во-первых, вам не нужно использовать массивы. String объекты по существу уже являются массивами байтовых значений. Поэтому вместо создания больших массивов вы можете сделать это

var alphabet:String = "abcdefghijklmnopqrstuvwxyz";
var substitution:String = "mnbvcxzlkjhgfdsapoiuytrewq";

Чтобы получить доступ к определенному символу, вы можете просто вызвать метод indexOf для строки.

var indexOfJ = alphabet.indexOf("j");
trace(indexOfJ); //puts out 9

А вы уже сейчас как получить символ строки по определенному индексу.

var charAtIndex7:String = alphabet.charAt(7);
trace(charAtIndex7); //puts out "h"

Изменить отсюда:

Похоже, я был в полудреме, когда писал этот ответ прошлой ночью. Проблема с двойным циклом for заключается просто в том, что он всегда будет выполняться до конца, даже если он найдет предложение if, которое будет принято. Вы уже сами выяснили, что последнее else-предложение приводит к тому, что вводимый символ печатается 25 раз. Итак, давайте исправим.

function cipher(input:Textfield, output:Textfield, alphabet:String, substitution:String){
    textinProgress = input.text;
    var result:String = "";

    for(var b=0;b<textinProgress.length;b++)
    {
        var anyHit = false;
        for(var i=0;i<alphabet.length;i++){
            if(textinProgress.charAt(b).search(alphabet.charAt(i)) == 0){
                result += substituton.charAt(i);
                anyHit = true;
                break;
            }
            else if(textinProgress.charAt(b).search(alphabet.charAt(i).toUpperCase()) == 0){
                result += substituton.charAt(i).toUpperCase();
                anyHit = true;
                break;
            }
            else if(textinProgress.charAt(b) == "\r"){
                result += "\n";
                anyHit = true;
                break;
            }
        }
        if(anyHit == false){
            result += textinProgress.charAt(b);
        }
    }
    output.text = result;
}

Сегодня утром мой коллега проверил этот код, и он должен работать, как задумано.

Но это не все, что мы можем сделать для упрощения вашего кода. Мы можем вырезать второе предложение if, определив наш алфавит и переменные подстановки как строчными, так и прописными буквами.

var alphabet:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var substitution:String = "mnbvcxzlkjhgfdsapoiuytrewqMNBVCXZLKJHGFDSAPOIUYTREWQ";

Вы также должны иметь возможность вставлять специальные символы в свой алфавит и строку замены, например, \r.

var alphabet:String = "\rabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var substitution:String = "\nmnbvcxzlkjhgfdsapoiuytrewqMNBVCXZLKJHGFDSAPOIUYTREWQ";

Я не совсем уверен, что это сработает, но должно.

Теперь вы уже значительно сократили свой код, но мы можем сократить его еще больше. Действительно ли внутренний цикл for необходим? Поскольку наш алфавит и наша замена имеют одинаковую длину, возможно, мы можем упростить это еще больше.

function cipher(input:Textfield, output:Textfield, alphabet:String, substitution:String){
    textinProgress = input.text;
    var result:String = "";

    for(var b=0;b<textinProgress.length;b++)
    {
        var index:int = alphabet.indexOf(textinProgress.charAt(b));
        if(index >= 0){
            result += substitution.charAt(index);
        }else{
            result += textinProgress.charAt(b);
        }
    }
    output.text = result;
}

Собираем все вместе.

var alphabet:String = "\rabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var substitution:String = "\nmnbvcxzlkjhgfdsapoiuytrewqMNBVCXZLKJHGFDSAPOIUYTREWQ";

function cipher(input:Textfield, output:Textfield, alphabet:String, substitution:String){
    textinProgress = input.text;
    var result:String = "";

    for(var b=0;b<textinProgress.length;b++)
    {
        var index:int = alphabet.indexOf(textinProgress.charAt(b));
        if(index >= 0){
            result += substitution.charAt(index);
        }else{
            result += textinProgress.charAt(b);
        }
    }
    output.text = result;
}

function encode_btnclick(event:MouseEvent):void{
   cipher(inputText, outputText, alphabet, substitution);
}

function decode_btnclick(event:MouseEvent):void{
   cipher(inputText, outputText, substitution, alphabet);
}

function recode_btnclick(event:MouseEvent):void{
   cipher(outputText, outputText, alphabet, substitution);
}

Это должно быть в состоянии справиться

  • Текст любой длины
  • Разрывы строк
  • Прописные и строчные буквы
  • Неопределенные символы
person Community    schedule 31.08.2016
comment
Вау, большое спасибо за то, что я спиной к этому внутреннему циклу for. Я попытался сделать что-то подобное, и это не считалось ошибкой, но фактически уничтожал мой Flash Player каждый раз, когда я пытался его использовать. Я собираюсь применить все ваши блестящие методы и вернуться к вам, если это сработало. Желаю вам и вашему R-key процветания в будущем! - person HomeStarRunnerTron; 01.09.2016
comment
Эй, чувак, извини, что, несмотря на всю твою изобретательность (я определенно многому научился на этом), твой двойной цикл for сделал что-то довольно странное и необъяснимое! skyetheguy.com/terrifyingloop.png Вот что происходит, когда вы пытаетесь закодировать это сообщение. Я вижу правильный ответ (что такое Rlmu'i zskdz sd?), набитый где-то там... среди миллиона копий исходного сообщения... вы хоть понимаете, о чем идет речь? РЕДАКТИРОВАТЬ: Я НАЧИНАЮ получать это... есть 26 копий. И какую бы букву вы ни вставили, она найдет соответствующую в ряду алфавита. - person HomeStarRunnerTron; 01.09.2016
comment
Я удалил последний бит своего цикла, где он просто вводит любой символ, если он не является частью алфавита, и убрал неприятную штуку с 26 буквами для каждой буквы, но он до сих пор не знает, как для обработки прописных букв или разрывов. Единственное, что он может сделать правильно, — это простые строчные буквы — в тот момент, когда добавляется что-то еще, все превращается в беспорядок. - person HomeStarRunnerTron; 01.09.2016
comment
Фу, нет, с первого взгляда я не уверен, в чем может быть проблема. Вы можете попробовать добавить операторы break; для каждого предложения if. Что касается вашего третьего комментария о прописных буквах, вы можете изменить свой алфавит и замену, чтобы они содержали оба варианта, то есть var alphabet:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ" и тот же подход к замене. Я займусь этим более подробно, как только закончу работу. - person ; 01.09.2016
comment
Обновлен (и улучшен ;-) мой ответ. - person ; 01.09.2016
comment
Это было божественно. Я преклоняюсь перед вашим чрезвычайно эффективным использованием пространства для кодирования. Спасибо, что научили меня так многому в процессе, так много значите для меня. :) Однако я не мог быть более озадачен его способностью читать этот специальный символ разрыва строки. skyetheguy.com/itgetsthelinebreak.png - person HomeStarRunnerTron; 02.09.2016
comment
Обновлена ​​ссылка на инструмент перевода вверху с вашим ответом и сообщением с благодарностью в заголовке. :) - person HomeStarRunnerTron; 02.09.2016

Вам следует искать подстановочные шифры, например, одним из самых простых является Шифр Цезаря.

person Baderous    schedule 30.08.2016
comment
Большое спасибо за быстрый ответ. :) Как человеку, который новичок в мире секретных кодов, это определенно кажется более подходящим для Google. - person HomeStarRunnerTron; 31.08.2016