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関数は文字列を変更しません。新しい文字列を返します。つまり、次のように割り当てる必要があります。

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;");
}

ReplaceAllまた、必要に応じて、代わりにJavascriptでグローバル置換が行われる一般的な方法を使用できるため、カスタムプロトタイプ関数を使用する必要はありません。

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

ReplaceAll()は文字列を返します。だからあなたはすべきです

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

Clean()関数で

于 2012-11-07T19:05:06.977 に答える
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 に答える