2016-08-30 63 views
3

昨天晚上,我的小弟弟问我是否有可能制作一个程序,用它代替字母表中的另一个字母,把它变成一个代码,还有将其恢复到正常状态。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不适合我的原因。
  • 它还考虑到诸如换行符和未包含在字母表中的随机符号。

我知道确实有更简单,更节能的方法来编码,但我只是不知道如何。

+0

任意长度的。如果你的代码工作,你想知道更好的做法和一般的审查,你也可以在[codereview.se]上询问。 – null

+0

非常感谢,这正是我所需要的。 :) – HomeStarRunnerTron

+0

确保你只问在那里有什么话题。您关于如何替换两个字母的想法不会,因为它是尚未编写的代码。请检查他们的帮助页面。 – null

回答

1

我会扩展我的评论,并告诉你如何简化你的代码,并削减了很多。

首先,你不需要使用数组。 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" 

编辑FOM这里:

貌似我只对了一半清醒时,我昨晚写的答案。双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"; 

我不完全确定这是否可行,但它应该。

现在你已经大大缩短了你的代码,但是我们甚至可以进一步缩短它。内循环真的需要吗?因为我们的字母和我们的替换长度相同,所以也许我们可以更加简化这一点。

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

这应该能够处理

  • 文本
  • 换行符
  • 大小写字母
  • 未定义字符
+0

哇,非常感谢你让我回到那个内心循环。我试图做这样的事情,但它不被认为是一个错误,但它实际上每次尝试使用它都会摧毁我的Flash Player。我将会应用你所有的精彩技术,如果能够成功的话,请回复你。祝愿你和你的R-key在未来大有可为! – HomeStarRunnerTron

+0

嘿,男人 - 抱歉地说,尽管你的聪明才智(我肯定从中学到了很多东西),你的双重循环已经做了一些非常奇怪和无法解释的事情! http://www.skyetheguy.com/terrifyingloop.png当您尝试编码该消息时,会发生这种情况。我看到正确的答案(这是“Rlmu'i zskdz sd?”)塞在那里的某个地方...在原始消息的数百万份拷贝中...你知道这是关于什么吗?编辑:我开始得到它...有26份。而且,无论您输入什么信件,都可以找到与字母表对应的字母。 – HomeStarRunnerTron

+0

我删除了我的循环的最后一位,它只会输入任何符号,如果它不是字母表的一部分,并且它拿走了令人讨厌的26字母为每个字母的事情,但它仍然不知道如何处理大写字母或中断。它唯一能做的事情就是用简单的小写字母 - 在添加其他任何东西的时候,整个事情变成混乱。 – HomeStarRunnerTron