VIDEO LESSON

JavaScriptのString.prototype.replace()の使い方:引数・戻り値・実例と注意点の解説動画

再生時間 8:01動画を別のタブで開く ↗
動画の字幕・文字起こしを読む

再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。

  1. 0:00こんにちは。
  2. 0:00今回はリプレイスを紹介します。
  3. 0:03これは、文字列の中で一致した部分を、別の文字列に置き換えるメソッドです。
  4. 0:09前回のリプレイスオールが一致するすべてを置き換えたのに対して、リプレイスは検索文字列の場合、
  5. 0:14最初の一致だけを置き換えます。
  6. 0:19この動画では、書き方と引数と戻り値、記事の基本例である定型文の名前差し替え、
  7. 0:24最初の一個だけが変わる境界例、正規表現のジーフラグで全件置換する方法まで、
  8. 0:29実行結果と一緒に学びます。
  9. 0:34一個だけ変えたい場面に、ぴったりの道具です。
  10. 0:37置換は文字列処理の基本ですので、仕組みをしっかり押さえましょう。
  11. 0:43まず動作環境を確認します。
  12. 0:44リプレイスはジャバスクリプトの初期からある、とても古くから使える文字列メソッドです。
  13. 0:49クロームでは一以降、エッジでは十二以降、ファイアーフォックスでは一以降、
  14. 0:53サファリでは一以降で使えます。
  15. 0:56ノード・ジェイエスではゼロ・十・ゼロ以降に対応しています。
  16. 0:59記事の互換性情報はエムディーエヌのデータに基づく目安ですが、対応範囲が非常に広いため、
  17. 1:03通常は環境を心配せず使えます。
  18. 1:06追加の読み込みは不要で、空文字列にも関数として備わっていることを実機で確認済みです。
  19. 1:12迷ったときは、実際に使う環境で小さなコードを試すのが確実です。
  20. 1:15書き方を確認します。
  21. 1:17対象の文字列に続けてリプレイスと書き、カッコの中に探したいパターンと、置き換え後の内容を渡します。
  22. 1:26第一引数は検索文字列か正規表現です。
  23. 1:29第二引数は置換文字列か、置換を行う関数です。
  24. 1:33戻り値は、置換後の新しい文字列で、元の文字列自体は変更されません。
  25. 1:39スライドの例では、エーが三つ並ぶ文字列の最初の一つだけがビーになること、
  26. 1:46ハローが二回出ても最初の一つだけがハイになることを、実機で確認しました。
  27. 1:52引数の順番は、探すもの、置き換え後、の順です。
  28. 1:56結果を受け取るには、戻り値を変数に入れるか、そのまま表示する形で使ってください。
  29. 2:04引数の順番を声に出して確認すると、逆に書くミスを防げます。
  30. 2:09記事の基本例を見ます。
  31. 2:11ハローの後にプレースホルダーの名前が入った定型文で、ネームという目印を実際の名前に置き換えるコードです。
  32. 2:19実行するとハロー葵と表示され、記事の期待出力と一致し、ノードの実機結果とも一致しました。
  33. 2:27記事が説明するように、これは定型文の一か所を差し替える使い方です。
  34. 2:32あいさつ文や通知文のように、決まった文面の一部だけを差し替える場面で、そのまま使える形です。
  35. 2:40置き換える対象が一文字でも、文章でも、考え方は同じです。
  36. 2:45まずはこの基本例を手で実行してみてください。
  37. 2:48差し替える目印は、本文に現れない独特な文字列にすると安全です。
  38. 2:54記事の境界条件の例を見ます。
  39. 2:56エーがハイフンを挟んで三つ並ぶ文字列に対して、エーをビーに置き換えるコードです。
  40. 3:02実行するとビーハイフンエーハイフンエーとなり、記事の期待出力と同じく、最初のエーだけが変わったことが分かります。
  41. 3:11実機の結果とも一致しました。
  42. 3:13これがリプレイスの一番大切な性質です。
  43. 3:16すべて変えたいのにリプレイスの文字列検索を使ってしまうと、置き換え漏れが起きます。
  44. 3:22成功例だけでなく、こうした境界条件を確かめると、実際のデータ処理へ組み込みやすくなります。
  45. 3:29置き換え漏れは画面では気づきにくいため、同じ語が複数回出るデータでは特に注意してください。
  46. 3:36第一引数に正規表現を使う例を見ます。
  47. 3:39同じ文字列でも、正規表現にジーフラグを付けて渡すと、一致するすべてが置換され、
  48. 3:44結果はすべてビーになります。
  49. 3:49一方、ジーフラグのない正規表現では、文字列検索と同じく最初の一個だけが変わります。
  50. 3:57どちらも実機の結果と一致しました。
  51. 4:00つまりリプレイスでも、正規表現のジーフラグを使えば全件置換ができます。
  52. 4:06正規表現を使うと、数字だけ、空白だけといった、種類で絞った置換もできます。
  53. 4:13パターンの意味とジーフラグの有無を、実行前に確認する習慣を付けてください。
  54. 4:20たとえば空白やカンマの種類をそろえる処理でも、正規表現ならまとめて表現できる場合があります。
  55. 4:29第二引数に置換関数を使う例を見ます。
  56. 4:31置換文字列の代わりに関数を渡すと、一致が見つかるたびにその関数が呼ばれ、
  57. 4:35戻り値が置き換え後の文字列になります。
  58. 4:40スライドの例では、ジーフラグ付きの正規表現で連続した数字を見つけて数値に直し、
  59. 4:44二倍にしてから文字列に戻しています。
  60. 4:48結果は百が二百、二百が四百となり、実機とも一致しました。
  61. 4:52ジーフラグがない場合は、最初の一致だけが関数の対象になります。
  62. 4:57決まった文字列への置き換えでは足りず、一致した内容に応じて結果を変えたい場合に便利です。
  63. 5:03計算が必要な置換や、一致ごとに違う値を作りたい場面で力を発揮します。
  64. 5:08置換文字列に含まれるドル記号の扱いを見ます。
  65. 5:12ドルとアンパサンドの組み合わせは、一致した部分そのものを表す特殊なパターンです。
  66. 5:17エービーシーのビーを角カッコ付きのこのパターンで置き換えると、一致したビーがはさまれてエー角カッコビーシーとなり、
  67. 5:23実機でも確認できました。
  68. 5:28記事も注意しているように、任意の文字列をそのまま返したい場合は、置換関数を使ってください。
  69. 5:34関数から同じ文字を返すと、特殊な解釈はされず、そのままの文字として置き換わります。
  70. 5:40利用者の入力を置換文字列に使う場合は、特に注意が必要です。
  71. 5:44ドル記号を文字として使いたい場合は、二つ重ねて書く表記も実機で確認できます。
  72. 5:50前回のリプレイスオールとの違いを、日付の区切りで確かめます。
  73. 5:54スラッシュ区切りの日付文字列に対して、リプレイスを使うと最初のスラッシュだけがハイフンになり、
  74. 5:59後ろはスラッシュのまま残ります。
  75. 6:04一方リプレイスオールでは、二か所ともハイフンに変わります。
  76. 6:08どちらも実機の結果と一致しました。
  77. 6:10一個だけ変えたい場合はリプレイス、すべて変えたい場合はリプレイスオールか、
  78. 6:15ジーフラグ付きの正規表現を使うリプレイスを選んでください。
  79. 6:20目的が一個か全部かで、方法を使い分けることが大切です。
  80. 6:24置き換え漏れは気づきにくいため、同じ語が複数回出るデータでは特に慎重に選んでください。
  81. 6:30注意点を三つ確認します。
  82. 6:32まず、大文字と小文字は区別されます。
  83. 6:35キャットと小文字のキャットが混ざる文字列では、小文字の方だけがドッグに変わり、
  84. 6:39実機でも確認できました。
  85. 6:43次に、検索文字列に空文字列を渡すと、置換文字列は先頭にだけ入ります。
  86. 6:49文字の間にも入るリプレイスオールとの違いに注意してください。
  87. 6:54最後に、該当する箇所がなければ、元の文字列がそのまま返ります。
  88. 6:59エラーにはなりません。
  89. 7:01あわせて、リプレイスを実行しても元の文字列は変わらないため、結果を使いたい場合は戻り値を受け取ってください。
  90. 7:09元の文字列が変わらない性質のおかげで、変換前と変換後を並べて比べることも簡単です。
  91. 7:16まとめです。
  92. 7:17リプレイスは、一致した部分を置き換えた、新しい文字列を返すメソッドです。
  93. 7:22判断のポイントは三つです。
  94. 7:24まず、検索が文字列なら置換は最初の一個だけであること。
  95. 7:28次に、全件変えたい場合はジーフラグ付き正規表現かリプレイスオールを使うこと。
  96. 7:34そして、置換文字列のドル記号には特殊な意味があり、そのまま返したい場合は置換関数を使うことです。
  97. 7:41まずは記事の基本例と境界例を実行し、検索文字列を一つ変えて、結果を予測してから確かめてみてください。
  98. 7:49前回のリプレイスオールと合わせると、文字列の置換の使い分けが完成します。
  99. 7:54お疲れさまでした。
  100. 7:55小さな置換を正しく使い分けることが、読みやすいデータ整形につながります。
日本語字幕をダウンロード(WebVTT)

この動画で学べること

String.prototype.replace()で文字列の一致部分を置換する方法を解説。引数と戻り値、実行結果付きのコード、間違えやすい点、ブラウザー・Node.js対応を確認できます。

解説記事・サンプルコードを読む:JavaScriptのString.prototype.replace()の使い方:引数・戻り値・実例と注意点 →