替换javascript中的某些字符

Replacing certain characters in javascript

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

来自PHP背景,我有点被str_replace函数宠坏了,你可以通过它传递一个haystack&针。

我还没有在Javascript中看到这样的函数,但我已经完成了这项工作,尽管很难看,代码如下:

return myString.replace(" ", "-").replace("&", ",");

然而,随着我越来越需要用另一个角色来替换某些角色,我相信有更好的方法来实现这一点——既有表演方面的,也有更漂亮的。

那么我该怎么办呢?

您可以使用这个:

    var str = "How are you doing?";
    var replace = new Array(" ", "['?]", "'!", "'%", "'&");
    var by = new Array("-", "", "", "", "and");
    for (var i=0; i<replace.length; i++) {
        str = str.replace(new RegExp(replace[i], "g"), by[i]);
    }

将其放入一个函数中:

function str_replace(replace, by, str) {
    for (var i=0; i<replace.length; i++) {
        str = str.replace(new RegExp(replace[i], "g"), by[i]);
    }
    return str;
}

用法示例fiddle:http://jsfiddle.net/rtLKr/

JavaScript的美妙之处在于,您可以扩展基类型的功能,从而可以将方法添加到String本身:

// v --> array of finds
// s --> array of replaces
String.prototype.replaceAll = function(v, s){
    var i , ret = this;
    for(i=0;i<v.length;i++)
        ret = ret.replace(v[i], s[i]);
    return ret;
}

现在使用它:

alert("a b c d e f".replaceAll(["a", "b"], ["1", "2"])); //replaces a b with 1 2

演示在这里。

如果这对你来说更容易,你可能会喜欢这样的东西;

str.replace(/[ab]/g, function (match, i) {
    switch (match) {
        case "a":
          return "A";
        case "b":
            return "B";    
    }
}));

即,在参数1中创建一个正则表达式,该表达式接受您要查找的所有令牌,然后在函数中添加case来进行替换。

下面是一些其他答案的组合。我只是喜欢它,因为替换的键值声明

function sanitize(str, replacements) {
    var find;
    for( find in replacements ) {
        if( !replacements.hasOwnProperty(find) ) continue;
        str = str.replace(new RegExp(find, 'g'), replacements[find]);
    }
    return str;
}
var test = "Odds & ends";
var replacements = {
    " ": "-", // replace space with dash
    "&": ","  // replace ampersand with comma
    // add more pairs here
};
cleanStr = sanitize(str, replacements);

PHP.js有一个函数可以解决您的问题:http://phpjs.org/functions/str_replace:527