2

Last night, my little brother asked me if it were possible to make a program that would substitute every letter for another letter in the alphabet, to turn it into a code, and also turn it back to its normal state.

So I made this: http://www.skyetheguy.com/novatranslationtool

And by all accounts, it does the job, but I feel like, code-wise, it's clunky as all get-out, and I'd really love to improve my knowledge on things like loops...

EDIT: The above has since been updated with DodgerThud's amazing answer and works like a dream. : ) Dreams DO come true!

Also, this is very pie-in-the-sky, but it'd be amazing to get this to work with longer-than-two-characters things. My code definitely wouldn't do that at all. But, you know, all those fun codes with apostrophes in them... good stuff!

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

Just gonna tell you why I did all the incredibly arbitrary and loopy stuff that I did...

  • If you do any of the other normal replace things other people have talked about here (from what I've FOUND, at least), you end up replacing your own work at a certain point. For example if you want B to be A, but then you want A to be C, then if you type "BA", you get back "CC" instead of "AC". So my code actually takes each character and spits them all out one at a time.
  • I did all that tedious ".toUpperCase()" stuff to make sure that this tool was case-sensitive-- so that if I typed in a lowercase or uppercase key, it would always generate the proper one in its place. That's why RegExp didn't quite work for me.
  • It also takes into account things like line breaks and random symbols not included in the alphabet.

I know for SURE there's simpler, more energy-efficient ways to code this, but I just have no idea how.

  • If your code is working and you want to know about better practises and a review in general, you can also ask on [codereview.se]. – null Aug 30 '16 at 22:41
  • Thank you so, so much, that's exactly what I need. : ) – HomeStarRunnerTron Aug 30 '16 at 23:02
  • Make sure you only ask what's on topic there. Your idea about how to substitute two letters would not be, as it's code that's not yet written. Check their help page please. – null Aug 30 '16 at 23:18
  • Here's a suggestion to cut out a lot of lines from your code. Don't use arrays, use strings and the `indexOf`function in string. i.e. one string with "abcdef.." and one string with the substitutions. I'm sure you can also simplify your big if-chains by doing an inner loop that has the length of the alphabet. –  Aug 31 '16 at 20:11

2 Answers2

2

I'm gonna expand on my comment and show you how can simplify your code and cut out a lot of it.

First off, you don't need to use Arrays. String objects in essence already are Arrays of byte values. So instead of creating big arrays, you can do this

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

In order to access a specific character, you can simply call the indexOf method on the string.

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

And you already now how to get the character of a string from a specific index.

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

Edit fom here:

Looks like I was only half-awake when I wrote that answer last night. The issue with the double for-loop is simply that it will always run the whole way through, even if it found an if clause that gets accepted. You already figured out on your own that the last else-clause causes the input character to be printed 25 times. So, lets fix it.

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;
}

I had a coworker test this code for me earlier today, and it should work as intended.

But that's not all we can do to simplify your code. We can cut out the second if clause by defining our alphabet and substitution variables with both lowercase and uppercase letters.

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

You should also be able to put in special symbols into your alphabet and substitution string, like \r for example.

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

I'm not entirely sure if this will work, but it should.

Now you have already considerably shortened your code, but we can even shorten it further. Is the inner for loop really neccessary? Because our alphabet and our substitution are the same length, maybe we can simplify this even more.

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;
}

Putting it all together.

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

This should be able to handle

  • Text of any length
  • Line breaks
  • Upper- and Lowercase letters
  • Undefined characters
  • Wow, thank you SO much for having my back on that inner for loop. I attempted to do something like that, and it wasn't considered an error, but it actually destroyed my Flash Player every time I tried to use it. I'm going to apply all of your brilliant techniques and get back to you on if it worked. Wish you and your R-key much prosperity in the future! – HomeStarRunnerTron Sep 01 '16 at 02:37
  • Hey, man-- sorry to say that, despite all of your ingenuity (I've definitely learned a lot from this) that your double for loop has done something pretty bizarre and unexplainable! http://www.skyetheguy.com/terrifyingloop.png This is what happens when you try to encode that message. I see the correct answer (which is "Rlmu'i zskdz sd?") stuffed somewhere in there... among the million copies of the original message... do you have any clue what this is about? EDIT: I'm STARTING to get it... there's 26 copies. And whatever letter you put in finds it correspondent in the line up of the alphabet. – HomeStarRunnerTron Sep 01 '16 at 07:43
  • I deleted the last bit of my loop where it'll just enter in any symbol if it's not a part of the alphabet, and it took away the nasty 26-letters-for-each-letter thing, but it still has no idea how to handle uppercase letters, or the breaks. The only thing it can do right is plain lowercase letters-- the moment anything else is added, the entire thing becomes a jumble. – HomeStarRunnerTron Sep 01 '16 at 08:18
  • Phew, no, from a first glance I'm not sure what the problem might be. You could try to add `break;` statements for every if-clause. Concerning your third comment about uppercase letters, you could modify your alphabet and substitution to contain both variants, i.e. `var alphabet:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ"` and the same approach for substitution. I will take a deeper look into this once I'm done with work. –  Sep 01 '16 at 08:20
  • Updated (and improved ;-) my answer. –  Sep 01 '16 at 16:34
  • That was godly. I bow down to your extremely efficient use of coding space. Thank you for teaching me so much in the process, means so much to me. : ) I couldn't be more perplexed by its ability to read that special line break symbol, though. http://www.skyetheguy.com/itgetsthelinebreak.png – HomeStarRunnerTron Sep 01 '16 at 22:11
  • Updated the translation tool link at the top with your answer implemented, and a thank you message in the head. : ) – HomeStarRunnerTron Sep 01 '16 at 22:25
1

You should search for Substitution ciphers, e.g., one of the simplest ones is the Caesar cipher.

Baderous
  • 1,069
  • 1
  • 11
  • 32
  • Thank you so much for your quick response. : ) As someone who's a noob to the world of secret codes, that definitely seems to be more Google-able. – HomeStarRunnerTron Aug 30 '16 at 22:10