我制作了这个可行的解决方案来解决我的问题:
如果可能的话,我想在这段代码中做得更好。
1)在第 33 行,我必须使用这个肮脏的技巧""+c[i][j])
将 Array 中的数字转换为字符串。但是当回去时,问题是我的数组中不再是数字了!这非常快,但是如果您有更好的想法而又不丢失数字定义,那么请。让我知道。2)我正在使用 2 个版本的 ROT13 和 ROT18。我找到了ROT13单行代码版本:s.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});
如何以简单的方式将数字和-_@字母添加到ROT13?3)如您所见,我正在使用 2D 数组来存储我的代码。有更好的建议吗?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
var AscII = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@.-";
var ROT18 = "STUVWXYZ0123456789@.-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR";
var c = new Array();
c[0]=new Array( "Name","Home","City","Post code","Telephone","email","Web","Id","Number","xpos","ypos");
c[1]=new Array( "John","Street 123","1234","New York","438-1450123","john@demo.com","www.demo1.com","b",59,306380,565500);
c[2]=new Array( "Poul","Street 1234","2345","New York","450-7010123","poul@demo.com","www.demo2.com","i",113,308396,6354772);
c[3]=new Array( "David","Street 12345","3456","New York","451-3111123","david@demo.com","www.demo3.com","i",129,377615,581358);
$(function() {
var Normal = function() {
var txt ="";
for (var i = 0; i < c.length; ++i) {
for (var j = 0; j < c[0].length; ++j) {
txt += ""+c[i][j] + ", ";
}
txt += "<br>";
}
$("#kData").html("<b>Normal ASCII<br></b>" + txt);
};
var Convert18 = function(Div, TxtFrom, TxtTo) {
var txt ="";
for (var i = 0; i < c.length; ++i) {
for (var j = 0; j < c[0].length; ++j) {
var ktxtX = decode((""+c[i][j]), TxtFrom, TxtTo);
c[i][j] = ktxtX;
txt += ktxtX + ", ";
}
txt += "<br>";
}
$(Div).html("<b>ROT18 + Numbers + @-_<br></b>" + txt);
};
var Convert13 = function(Div) {
var txt ="";
for (var i = 0; i < c.length; ++i) {
for (var j = 0; j < c[0].length; ++j) {
var ktxtX = rot13(""+c[i][j]);
// s.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});
c[i][j] = ktxtX;
txt += ktxtX + ", ";
}
txt += "<br>";
}
$(Div).html("<b>ROT13<br></b>" + txt);
};
var decode = function (txt, alphabet, substitution) {
return txt.split("").map(function (c) {
if (alphabet.indexOf(c) != -1) { return substitution.charAt(alphabet.indexOf(c)); }
else { return c; }
}).join("");
};
function rot13(str) {
return str.replace(/[a-zA-Z]/g, function(c) {
return String.fromCharCode((c <= 'Z' ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
});
}
Normal();
Convert18("#kData2", AscII, ROT18);
Convert18("#kData3", ROT18, AscII);
Convert13("#kData4");
Convert13("#kData5");
$("#kData6").html("Finised - j:" + c[0].length + " - i:" + c.length);
});
</script>
</head>
<body>
<div id="kData"></div>
<div id="kData2"></div>
<div id="kData3"></div>
<div id="kData4"></div>
<div id="kData5"></div>
<div id="kData6"></div>
</body>
</html>
我将代码副本放在http://jsfiddle.net/kpsphoto/b7MaQ/