1

文字列の各文字を配列内の文字と比較し、一致する文字に置き換えることにより、文字列内の特殊文字を取り除きたいと思います。以下の関数はエラーをスローしませんが、文字列を変更せずに返し続けます

    var name = "przykład";      

    // the characters i'm looking for in a string:
    var charList = ["Ą","ą","Ć","ć","Ę","ę","Ł","ł","Ó","ó","Ś","ś","Ź","ź","Ż","ź"];

    // the characters i'd like to replace them with:
    var replaceList = ["A","a","C","c","E","e","L","l","O","o","S","s","Z","z","Z","z"];

    var limit = name.length;
    for (i = 0; i < limit; i++){
        for(var j in charList){
            name.charAt(i) === charList[j] ? name.replace(name.charAt(i), replaceList[j]) : "";
        }
    }

    return name;

この質問はおそらく「ローカライズされすぎている」としてクローズされる可能性が高く、おそらく私が犯した愚かで簡単な間違いですが、それでもこれについて何か助けていただければ幸いです

4

3 に答える 3

5

通常、関数の結果は、ほとんどのプログラミング言語で新しいオブジェクトreplaceとして返されます。Stringコードを次のように変更する必要があります。

if (name.charAt(i) === charList[j])
    name = name.replace(name.charAt(i), replaceList[j]);

また、replace 関数は出現するすべての文字を置き換えるため、アルゴリズムを少し変更できます。

于 2013-05-14T01:00:58.643 に答える