JavaScriptのtrimは全角スペースも削除するので代替でreplaceを使用

trimは全角スペースも削除する

Rubyなどの言語だとtrimを使用すると全角スペースは削除しないが、JavaScriptだと全角スペースも削除される。

Rubyを書く人だとJavaScriptも書く人が結構多いので注意が必要だ。

1
2
3
4
5
6
7
8
const str = ' foo '
const strTrim = str.trim()
 
console.log(`「${str}」`)
// => 「 foo 」
 
console.log(`「${strTrim}」`)
// => 「foo」

全角スペースは削除しないようにする

全角スペースは削除しないようにするにはtrim()の全角スペースを削除しない版のtrimRuby()のようなメソッドを作成すれば良い。

1
2
3
4
5
6
7
8
9
10
11
String.prototype.trimRuby = function () {
  return this.replace(/^[ \r\n\t\uFEFF\xA0]+|[ \t\r\n\uFEFF\xA0]+$/g, '');
};
const str = ' foo '
const strTrim = str.trimRuby()
 
console.log(`「${str}」`)
// => 「 foo 」
 
console.log(`「${strTrim}」`)
// => 「foo 」