是否可以只转换字母而不是数字

时间:2017-11-09 12:13:49

标签: javascript

是否可以仅在4个数字后转换字母。没有转换数字也。我使用charCodeAt来执行此操作。

我想要做的只是转换字母而不是数字。下面我也转换数字。我想在前4个字符后转换字符,字母转换为ascii数字。



function convertZipcodeToInteger(letters){
  letters = letters;
  for(var i = 0; i < letters.length; i++){
    let number = letters.charCodeAt(i) % 65 + "";
      if (number.length < 2)
      {
        number = "0" + number;
      }
      console.log(number);
  }
}   convertZipcodeToInteger('7711AD');
&#13;
&#13;
&#13;

我现在正在使用代码将7711AD放入letters参数中。将它们放在for循环中,以便将所有字母(和数字)转换为charCodeAt。当number.length小于2时,它前面会得到0。

我想要做的是将其转换为:77110003这是转换后的字母。我不想要转换数字,因为他们不需要改变。

3 个答案:

答案 0 :(得分:1)

您可以测试该值是否为数字,如果不是该字母并将其转换为基于36的数值并在返回之前填充它。

function convertZipcodeToInteger(string) {
    function pad2(s) { return ('00' + s.toString()).slice(-2); }
    
    return string
        .split('')
        .map(function (c) {
            return /\d/.test(c)
                ? c
                : pad2(parseInt(c, 36) - 10);
         })
        .join('')
};

function convertZipcodeToLetter(string) {
    return string.slice(0, 4) + string
        .slice(4)
        .split(/(?=(?:..)*$)/)
        .map(function (s) { return (+s + 10).toString(36).toUpperCase(); })
        .join('');
}

console.log(convertZipcodeToInteger('7711AD'));
console.log(convertZipcodeToLetter('77110003'));

答案 1 :(得分:0)

  

是否可以只转换4个数字后的字母。

只需从4

开始 for循环即可
for(var i = 4; i < letters.length; i++){ //notice var i = 4

修改

看起来你想在每次出现时更换字母,而不一定是在4个数字之后,

"7711AD".replace(/[a-z]/gi, function(match){ return ( "0" + match.charCodeAt( 0 ) % 65).slice( -2 ) });

<强>演示

"7711AD".replace(/[a-z]/gi, function(match) {
  return ( "0" + match.charCodeAt(0) % 65).slice( -2 ); //ensuring that single digit is padded with 0
});

答案 2 :(得分:0)

你的问题有点难以理解,但这就是我认为你所追求的:
它也可以在没有regexp magic的功能的情况下完成

  

前4个字符数字,只应添加0(例如07)
  然后 2个字母,应该从0-26编码,并且总是两个字符长

function convertZipcodeToInteger(letters){
  for(var i = 0; i < letters.length; i++){
    let number = letters[i];
    if (i>3) { number = letters.charCodeAt(i) % 65 + ""; }
    if (number.length < 2) {
      number = "0" + number;
    }
    console.log(number);
  }
}   convertZipcodeToInteger('7711AD');