用不同的值javascript替换多个不同的字符

时间:2016-09-22 19:01:20

标签: javascript

我正在尝试用相应的值替换不同的设置字符。例如每个<用#U34替换,每个$替换为#89。

我有一个字符串数组,随机抛出这些字符。例如:

var arr = [
'uisdhfu<',
'u$$fd<'
]
到目前为止,我发现我能做到:

  var replace = /</ig;
    var newString = textWithCharacters.replace(replace, '#U34');

但这似乎只能一次为一个角色完成。如果我想做多个,我似乎每次都需要创建一个新的字符串。有没有办法一次性完成这项工作?也许有循环和if语句?但我似乎无法弄清楚如何定义循环的条件。

4 个答案:

答案 0 :(得分:7)

.replace()方法接受第二个参数的函数,该函数传递匹配的字符串(例如'<'),并返回替换文本(例如'#U34')。

所以,你可以这样做:

var replacementMap = {
  '<': '#U34',
  '$': ')#89'
}

// Create a RegExp to match any of the characters that are used as keys in the map.
// For this example, this RegExp is the same as /[<$]/gi
// Note: this method of creating a RegExp may not work with certain characters such
// as -, ], or \
var replaceRegex = new RegExp('[' + Object.keys(replacementMap).join('') + ']', 'ig');

function getReplacementString(input) {
  return replacementMap[input];
}

var newString = textWithCharacters.replace(replaceRegex, getReplacementString);

答案 1 :(得分:1)

您可以拥有要替换的字符列表,然后将函数传递给replace方法,以便将匹配替换为正确的映射。像这样:

&#13;
&#13;
var arr = [
'uisdhfu<',
'u$$fd<'
];
var mapping = {
  "$":")#89",
  "<":"#U34",
};
var regex = new RegExp(Object.keys(mapping).map((key)=>"\\"+key).join("|"),"g");
var results = arr.map((string)=>string.replace(regex,(match)=>mapping[match]));
console.log(results);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用以下许多字符:(使用

.replace(/(x|y|z)/, '')

答案 3 :(得分:0)

你想要这样的东西(运行片段并查看console.log)

此处是HTML编号列表:http://www.ascii.cl/htmlcodes.htm

玩得开心:)

&#13;
&#13;
var array = ['#!toto','&#(i u%','$mpo*+'];

var symbol = [' ','!','"','#','$','%','&',"'",'(',')','*','+',',','etc...'];

console.log(array);

for(var i = 0; i < array.length ; i++){
      
      var temp = '';
      for(var j = 0; j < array[i].length ; j++){
          
          var index = symbol.indexOf(array[i][j]);

          if(index != -1){
             temp = temp + '&#'+(32+index); 
          }
          else{
              temp = temp + array[i][j];
          }
      }
      array[i] = temp;
}

console.log(array)
&#13;
&#13;
&#13;