2016-12-24 12 views
0

私はJavaScriptの文字列に不変性があると聞きました。JavaScriptのStringの置換メソッドを作成するにはどうすればよいですか?

文字列内の一部の文字を置き換えるメソッドを作成するにはどうすればよいですか?

である私は何をしたい:私はそれが文字列の不変ので、動作しません知っている

'abc'.replaceChar('a','b'); // bbc 

:次に

String.prototype.replaceChar(char1, char2) { 
    for (var i = 0; i < this.length; i++) { 
     if (this[i] == char1) { 
      this[i] = char2; 
     } 
    } 
    return this; 
} 

、私はこのようにそれを使用することができます。

しかし、ネイティブコードで、私はこのような方法で置き換えるネイティブを使用することができます。

'abc'.replace(/a/g,'b'); 

を私は本当にこの問題を解決する方法がわかりません。

+0

を '。オリジナルは変更されません。 –

+0

文字列/文字を参照で置き換えたいですか? – Dwza

答えて

1

あなたも、配列を使用することができます。新しい文字列を返すreplace`

String.prototype.replaceChar = function (char1, char2) { 
 
newstr=[]; 
 
for (i = 0; i < this.length; i++) { 
 
newstr.push(this[i]); 
 
if (newstr[i] == char1) { 
 
newstr[i] = char2 
 
} 
 
} 
 

 
return newstr.join(""); 
 
} 
 

 
console.log('abca'.replaceChar('a','G'));

6

あなたは、次のアプローチを使用することができます:あなたは(学ぶための方法など)正規表現を含まない溶液をしたい場合は、以下を使用することができます

String.prototype.replaceAll = function(search, replacement) { 
    return this.replace(new RegExp(search, 'g'), replacement); 
}; 
+0

あなたは新しい変数を必要とせず、 'return this.replace(new RegExp(search、 'g')、replacement); ' – Dekel

+3

'を使用します。これは' 'abc'.replace(/ a/g 、 'b'); 'は、別の関数を呼び出してRegExpオブジェクトを作成するという点を除いて同じです。 –

1

を:

String.prototype.replaceChar = function(char1, char2) { 
 
    var s = this.toString(); 
 
    for (var i = 0; i < s.length; i++) { 
 
    if (s[i] == char1) { 
 
     s = s.slice(0, i) + char2 + s.slice(i+1); 
 
    } 
 
    } 
 
    return s; 
 
} 
 
console.log('aaabaaa'.replaceChar('a', 'c'))

考えてみましょう。一時変数にこの文字列の内容が必要な場合は、char-by-charを実行し、そのcharが探しているものならばあなたの文字列をもう一度構築する必要があります。

関連する問題