"apple,banana,orange" のような文字列を "apple banana orange" に置き換えたいとします。
(カンマを半角スペースに)
PHPですと以下のように、
php
<?php
$str = "apple,banana,orange";
str_replace(',', ' ', $str);
と、str_replace() を呼ぶことで全て置換することができます。
PHP:str_replace
しかし同様のノリでjavasciptで書くと...
javascript
const str = "apple,banana,orange";
const replaced = str.replace(',', ' ')
console.log(replaced) // apple banana,orange
と、マッチした先頭のものしか置換されません。
正規表現
String.prototype.replace()で全置換をする場合、正規表現を使います。
javascript
const str = "apple,banana,orange";
const replaced = str.replace(/,/g, ' ')
console.log(replaced) // apple banana orange
上記のように第一引数に正規表現リテラル(もしくはRegExpオブジェクト)を渡します。
またgフラグをつけることで、全てのマッチを探すことができます。
String.prototype.replace()
RegExp
split + join を組み合わせる
javascript
let str = "apple,banana,orange"
str = str.split(',') // ["apple", "banana", "orange"]
str.join(' ') // "apple banana orange"
String.prototype.split() は、引数に渡された文字で文字列を分割して、配列形式にして返します。
そして Array.prototype.join()は、引数に渡された文字で配列の要素を連結して、文字列にします。
String.prototype.split()
Array.prototype.join()