是否可以仅在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;
我现在正在使用代码将7711AD
放入letters参数中。将它们放在for循环中,以便将所有字母(和数字)转换为charCodeAt
。当number.length
小于2时,它前面会得到0。
我想要做的是将其转换为:77110003
这是转换后的字母。我不想要转换数字,因为他们不需要改变。
答案 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(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');