2

我有这个问题我正在尝试用 à ecc 替换所有像 àòùèì 这样的字符......

我有这个可以工作的原型:

String.prototype.ReplaceAll = function(stringToFind,stringToReplace){
    var temp = this;
    var index = temp.indexOf(stringToFind);
        while(index != -1){
            temp = temp.replace(stringToFind,stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
    };

现在我想将此原型与我的名为 Clean 的函数一起使用:

function Clean(temp){
temp.ReplaceAll("è","è");
temp.ReplaceAll("à","à");
temp.ReplaceAll("ì","ì");
temp.ReplaceAll("ò","ò");
temp.ReplaceAll("ù","ù");
temp.ReplaceAll("é","&eacuta;");
return temp;
}

现在我想像这样使用我的功能:

var name= document.getElementById("name").value;
var nomePul=Clean(name);

为什么这不起作用?怎么了?

在这种情况下它可以工作(没有我的功能干净,所以我认为问题就在那里)

var nomePul=nome.ReplaceAll("è","è");

有人可以帮助我吗?

4

6 回答 6

3

使用以下内容:

function Clean(temp){
temp=temp.ReplaceAll("è","è");
temp=temp.ReplaceAll("à","à");
temp=temp.ReplaceAll("ì","ì");
temp=temp.ReplaceAll("ò","ò");
temp=temp.ReplaceAll("ù","ù");
temp=temp.ReplaceAll("é","&eacuta;");
return temp;
}

您没有分配值

于 2012-11-07T19:04:10.807 回答
2

这是replaceAll的另一个实现。希望它可以帮助某人。

    String.prototype.replaceAll = function (stringToFind, stringToReplace) {
        if (stringToFind === stringToReplace) return this;
        var temp = this;
        var index = temp.indexOf(stringToFind);
        while (index != -1) {
            temp = temp.replace(stringToFind, stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
    };
于 2013-05-08T10:32:48.333 回答
1

ReplaceAll() 返回一个字符串。所以你应该做

temp = temp.ReplaceAll("è","è");

在您的 Clean() 函数中

于 2012-11-07T19:05:06.977 回答
1

ReplaceAll函数不会改变字符串。它返回一个新字符串。这意味着您需要分配它,如下所示:

function Clean(temp){
    temp = temp.ReplaceAll("è","è");
    temp = temp.ReplaceAll("à","à");
    temp = temp.ReplaceAll("ì","ì");
    temp = temp.ReplaceAll("ò","ò");
    temp = temp.ReplaceAll("ù","ù");
    temp = temp.ReplaceAll("é","&eacuta;");
    return temp;
}

请注意,原型方法可以链接起来,因此如果您这样做,您的重复性可能会稍微降低:

function Clean(temp){
    return temp.ReplaceAll("è","è")
        .ReplaceAll("à","à")
        .ReplaceAll("ì","ì")
        .ReplaceAll("ò","ò")
        .ReplaceAll("ù","ù")
        .ReplaceAll("é","&eacuta;");
}

如果您愿意,您可以改用 Javascript 中完成全局替换的典型方式,因此您不需要使用自定义ReplaceAll原型函数。

    return temp.replace(/è/g,"è")
        .replace(/à/g,"à")
        .replace(/ì/g,"ì")
        .replace(/ò/g,"ò")
        .replace(/ù/g,"ù")
        .replace(/é/g,"&eacuta;");
于 2012-11-07T19:06:15.710 回答
0

你可以在 javascript 中以 2 种方式应用它。

1)使用替换的字符串拆分和连接字符串数组:

  return temp.split("è").join("è")
        .split("à").join("à")
        .split("ì").join("ì")
        .split("ò").join("ò")
        .split("ù").join("ù")
        .split("é").join("&eacuta;");

2) 使用内置于 javascript 本身的全局替换(如Peter上面指定的)

return temp.replace(/è/g,"è")
        .replace(/à/g,"à")
        .replace(/ì/g,"ì")
        .replace(/ò/g,"ò")
        .replace(/ù/g,"ù")
        .replace(/é/g,"&eacuta;");
于 2014-11-18T12:55:31.033 回答
0

尝试以下代码替换所有。您可以使用此代码实现功能。

var str = "Test abc test test abc test test test abc test test abc";
str = str.split('abc').join('');
alert(str);
于 2017-01-10T15:28:32.770 回答