2

私は英語のアルファベットを持っています:

abcdefghijklmnopqrstuvwxyz

私は別のアルファベットを持っています:

ypltavkrezgmshubxncdijfqow

文字列があれば。すべての文字を新しいアルファベットの同等のものに置き換えたい.

したがって、文字列が abcde の場合、新しい文字列は yplta になります。

私が試してみました:

http://jsfiddle.net/KvFCr/10/

しかし、あまり進んでおらず、これが最善の方法であるかどうかさえわかりません。jqueryとjavascriptを使用して、私が望むものを達成するより良い方法はありますか?

4

3 に答える 3

3
var alphabet1  = "abcdefghijklmnopqrstuvwxyz";
var alphabet2  = "ypltavkrezgmshubxncdijfqow";
var message    = "encodethismessage".toLowerCase();

alert(encode(message,alphabet1,alphabet2));

function encode(message, alphabet1, alphabet2) {
    var newMessage = "";
    messageArr = message.split('');
    for(i in messageArr) {
        index = alphabet1.search(messageArr[i]);
        newMessage += alphabet2[index];
    }
    return newMessage;
}

変換済みの文字には絶対に触れたくないので注意が必要です。たとえば、すべて「a」を置き換えてからすべて「b」などを置き換えると、正しい結果が得られません。これは、各文字クラスではなく各文字を変換するため、機能するはずです。

簡単な暗号テキストのみの攻撃があるため、置換暗号は安全ではないことを警告したいだけなので、セキュリティが目標の場合にはこれを使用しないでください。

于 2012-06-18T21:07:48.430 に答える
1

試す:

var alpha1  = "abcdefghijklmnopqrstuvwxyz";
var alpha2  = "ypltavkrezgmshubxncdijfqow";
var str = "abcde";
var newstr = '';
for(var i=0;i<str.length;i++) {
    charPos = alpha1.indexOf(str.charAt(i));
    newstr += alpha2.charAt(charPos);
}
​console.log(newstr);​

jsFiddleの例

于 2012-06-18T21:19:01.560 に答える
0

関数を引数としてに渡すことができますstring.replace

var s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.replace(/[A-Z]/g, function(str, p1, p2, offset, s) {
    var translate_table = {
        'A': 'Y',
        'B': 'P',
        'C': 'L',
        'D': 'T',
        'E': 'A',
        'F': 'V',
        'G': 'K',
        'H': 'R',
        'I': 'E',
        'J': 'Z',
        'K': 'G',
        'L': 'M',
        'M': 'S',
        'N': 'H',
        'O': 'U',
        'P': 'B',
        'Q': 'X',
        'R': 'N',
        'S': 'C',
        'T': 'D',
        'U': 'I',
        'V': 'J',
        'W': 'F',
        'X': 'Q',
        'Y': 'O',
        'Z': 'W'
    };
    return translate_table[str];
});

alert(s);

http://jsfiddle.net/GjG3H/

于 2012-06-18T21:16:56.330 に答える