根据搜索/替换对替换字符串中的多个值

Replace many values in a string based on search/replace pairs

本文关键字:替换 搜索 字符串      更新时间:2023-09-26

如何通过javascript中的替换将值替换为数组。

我想把数字(例如)替换在一起。怎么样?

1-替换whit->11
2-替换whit->22

演示:http://jsfiddle.net/ygxfy/

<script type="text/javascript">
    var array = {"1":"11", "2":"22"}
    var str="13332";
    document.write(str.replace(array));
</script>​

您必须使用RegEx创建一个模式,然后将其传递给.replace方法。

var array = {"1":"11", "2":"22"}; // <-- Not an array btw.
// Output. Example: "1133322"
document.write( special_replace("13332", array) );
function special_replace(string_input, obj_replace_dictionary) {
    // Construct a RegEx from the dictionary
    var pattern = [];
    for (var name in obj_replace_dictionary) {
        if (obj_replace_dictionary.hasOwnProperty(name)) {
            // Escape characters
            pattern.push(name.replace(/([[^$.|?*+(){}''])/g, '''$1'));
        }
    }
    // Concatenate keys, and create a Regular expression:
    pattern = new RegExp( pattern.join('|'), 'g' );
    // Call String.replace with a regex, and function argument.
    return string_input.replace(pattern, function(match) {
        return obj_replace_dictionary[match];
    });
}

http://jsfiddle.net/mendesjuan/uHUs9/

您可以将函数传递到替换方法中

RegExp.escape = function(text) {
    return text.replace(/[-[']{}()*+?.,''^$|#'s]/g, "''$&");
}
String.prototype.mapReplace = function (replacements) {
    var regex = [];
    for (var prop in replacements) {
        regex.push(RegExp.escape(prop));
    }
    regex = new RegExp( regex.join('|'), "g" );
    return this.replace(regex, function(match){
      return map[match];
    });
}

var map = {"1":"11", "2":"22"};    
var str="13332";
document.write(str.mapReplace(map));​
var str = "13332",
    map = {"1":"11", "2":"22"};
str.split("").map( function(num ){
    return map.hasOwnProperty(num) ? map[num] : num;
}).join("");
//"1133322"
<script type="text/javascript">
    var rep = {"1":"11", "2":"22"}
    var str="13332";
    for (key in rep) {
        str = str.split(key).join(rep[key]);
    }
    document.write(str);
</script>​

使用reduce函数怎么样?

<script type="text/javascript">
  var array = {"1":"11", "2":"22"};
  var str = "13332";
  str = Object.keys(array).reduce(function(result, key) {
    return result.replace(new RegExp(key, 'g'), array[key]);
  }, str);
  document.write(str);
</script>