在一个窗口中将字母转换为预定义数字转换

时间:2013-05-21 22:33:10

标签: javascript encryption

) 我搜索了高低,但我找不到我需要的东西。或者我愚蠢地把它弄好; - )

我需要一个带有几个输入框的页面,我可以输入一些文本,然后输入每个输入下方的输出区域,显示转换为某些预定义数字的文本。

示例:

输入:abcdefghiæøå(我需要各种各样的字符,如。,/:等。)

输出:064 065 066 067 068 032

所以它需要像这样转换:

“a”=“064”

“b”=“065”

“space”=“032”

(是的,输出中的每个数字都需要分开,或者每个数字后面加一个空格)

我在php和javascript中尝试了一些不同的密码指南,但无法使其工作。我做了一个Excel文档,可以做一些,但它有可以转换的有限数量的字符,然后它开始表现怪异。所以我想也许PHP就是答案!

非常感谢任何帮助 /拉斯穆斯

1 个答案:

答案 0 :(得分:1)

在elclanrs的精神中删除了答案,并为后人:

<script>

// Using standard for loop
function stringToCharcodes(s) {
    var result = [];

    function pad(n){ return (n<10? '00' : n<100? '0' : 0) + n;}

    for (var i=0, iLen=s.length; i<iLen; i++) {
        result.push(pad(s.charCodeAt(i)));
    }
    return result.join(' ');
}

// Using ES5 forEach
function stringToCharcodes2(s) {
    var result = [];

    function pad(n){ return (n<10? '00' : n<100? '0' : 0) + n;}

    s.split('').forEach(function(a){result.push(pad(a.charCodeAt(0)))});

    return result.join(' ');
}
</script>

<input onkeyup="document.getElementById('s0').innerHTML = stringToCharcodes(this.value);"><br>
<span id="s0"></span>

修改

如果您想要自定义映射,请使用对象(我只包含2个字符,您可以根据需要添加任意数量):

var mapChars = (function() {
  var mapping = {'198':'019', '230':'018'};

  return function (s) {
    var c, result = [];

    for (var i=0, iLen=s.length; i<iLen; i++) {
      c = s.charCodeAt(i);
      result.push(c in mapping? mapping[c] : c);
    }

    return result.join(' ');
  }
}());

alert(mapChars('Ææ')); // 

使用字符代码进行映射似乎是一种合理的解决方案,使用实际字符可能会受到不同页面字符编码的影响。