Javascript:如何有选择地将字符串转换为各自的unicode值,添加1,然后转换回字符串?

时间:2017-02-19 19:20:18

标签: javascript unicode

我能够成功定位我的字符串中的字母,但是我无法将字母转换为其unicode值。请帮忙。

function LetterChanges(str) { 

for(var i = 0; i < str.length; i++){
 if(str.charCodeAt(i) > 64 && str.charCodeAt(i) < 127){
  str.repalce(i, charCodeAt(i));
  }
 }
console.log(str)      
}

LetterChanges("hello*3");  

2 个答案:

答案 0 :(得分:1)

&#13;
&#13;
function LetterChanges(str) {
  var newStr = ""; // the result string
  for (var i = 0; i < str.length; i++) {
    var c = str.charCodeAt(i);
    if (c > 64 && c < 127) {
      newStr += String.fromCharCode(c + 1);
    }
    else {
      newStr += String.fromCharCode(c);
    }
  }
  return newStr;
}

console.log(LetterChanges("hello*3"));
&#13;
&#13;
&#13;

如果您只想替换字母字符a-z,可以使用这样的正则表达式来完成:

&#13;
&#13;
function LetterChanges(str) {
  return str.replace(/[a-z]/gi, function(m) {
    return String.fromCharCode(
      m.charCodeAt(0) + 1
    );
  });
}

console.log(LetterChanges("Hello*3"));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我实际上认为这作为一个班轮看起来好多了。实际上我最近需要在一次采访中做到这一点,他们对我的解决方案的简洁性印象深刻。

所以我会用这个: function letterChange(str){ return String.fromCharCode.apply(null,Array.prototype.map.call(str,i=>i.charCodeAt(0)+1)); }

也不是i =&gt; u.charCodeAt(0)是一个lambda函数,并且在不使用转换器的情况下不能在所有Web浏览器中使用。如果您仍在使用es5:

,也可以使用此功能

function letterChange(str){ return String.fromCharCode.apply(null,Array.prototype.map.call(str,function(i){ return i.charCodeAt(0)+1; })); }

为了解释这一点,让我们分解一下:

可能引发问题的第一件事是“应用”功能。 Apply需要2个参数,一个对象(在这种情况下无关,所以我们使用null)和一个参数数组。然后,这些参数以逗号分隔的形式传递给我们称之为apply的函数。对于fromCharCode,传递多个参数将返回由所有结果组成的String。接下来,我们传递它'Array.prototype.map.call',它允许我们在String上调用数组文字函数映射,该映射不带有开箱即用的映射。然后我们将此函数传递给apply并返回完整的结果。