0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Node.jsでString.ReplaceAllが使えないんだが!!

Posted at

使えなかった

  • とある案件を引き継ぎ、Express.jsで書かれたサーバーサイドを書いていた。
  • CSV的にカンマで区切られた数値列をスペース区切りに変更したかったので、
const nums = '0.0,10.0,20.0,30.0,40.0,50.0,60.0'
// こんな感じの文字列を

// 0.0 10.0 20.0 30.0 40.0 50.0 60.0
// ↑こんな感じのスペース区切りにしたい

// ということで
const nums_space = nums.replaceAll(',', ' ')
// こんな感じで処理したい
  • こんな感じのことをした

  • すると nums.replaceAll(...) is not function みたいな感じで怒られた

Node.jsのバージョンが古かった

  • 調べてみると単純な話、Node.jsのバージョンが古くて String 型にreplaceAllが実装されていないということだった

  • replaceAllは比較的新しいES2015で追加された関数で、自分が使っていたNode.jsはv14.17.0だったので古すぎ!!ということだった。

  • Node.jsのバージョンが古いのは、引き継ぎ案件だったのもあってで、継ぎ足し継ぎ足しの秘伝のタレ的コードなので、その辺バージョンあげると逆に他のところが動かなくなる、という事情だったりした

  • もしバージョンが関係なければ、nodebrewとか使っているなら

$ nodebrew use v16.x.0
  • とか適当に新しいものに切り替えればいいと思う

String.replace()での置き換え

  • とまぁNode.jsのバージョンをとにかく変更できなかったので、以下の方法で代替した
const nums = '0.0,10.0,20.0,30.0,40.0,50.0,60.0'

const nums_space = nums.replace(/,/g, ' ')
  • replace()は昔から実装されているので、使える
  • 「すべて」をヒットされるgをつけて、第一引数に正規表現を与えると、目的のスペース区切りの数値列が手に入った

参考

  • Node.jsの各バージョンで対応しているES2015の記述方法はここにまとめられているので、もし困ったらここをみると良い
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?