JavaScript: 文字列を連結する
概略
文字列を連結には下のような方法があります。
- + 演算子で文字列を連結する。
- テンプレートリテラルで連結する。
- 配列 Array の join() 関数で連結する。
+ 演算子で文字列を連結する
文字列同士を + でつなぐと文字列の連結になります。
例: let s = "あいう" + "ABC"; //結果 "あいうABC"
文字列の連結は数値の足し算とは異なる点に注意してください。 また、変数に 1) 数値が入っているか、2) 文字列が入っているか? の違いは常に意識してください。
- TestJS_string_concat01.html
文字列の連結と数値の足し算の違い。
プログラムでも 1) 数値の足し算のコードと 2) 文字列の連結のコードが 混在すると見づらくなるのが欠点です。ということで、 文字列の連結では下で説明するテンプレートリテラルが新たに追加されました。
テンプレートリテラルで連結する
グレイヴ・アクセント ` で囲った文字列を テンプレートリテラル と呼びます。 テンプレートリテラルは IE では使用できない機能でしたが 現在では使用できます。
テンプレートリテラルを使うと文字列を + で連結した書き方が
不要になり混乱しません。
let v1 = 8; let v2 = 2; // + 演算子で文字列を連結して出力する //文字列を + で連結した書き方はごちゃごちゃしやすい欠点がある。 let s = v1 + " + " + v2 + " = " + (v1 + v2); //テンプレートリテラルで出力する let s = `${v1} + ${v2} = ${v1 + v2}`;
- TestJS_console_log01.html
文字列を連結して console.log() で出力するサンプル。
JavaScript: console.log() など
配列 Array.join("") で連結する
配列 Array の要素に文字列をセットして Array.join("") で連結する。
JavaScript: 配列と連想配列
//例: 配列のオブジェクトを作る。 const array = []; //配列に文字列を追加する。 array.push("テキスト1"); array.push("テキスト2"); array.push("テキスト3"); //配列の文字列を連結する。 const s = array.join(""); //結果は "テキスト1テキスト2テキスト3" になる。
連結のときの区切り文字を指定する
Array.join() の引数に区切り文字を指定すると 間に区切り文字を入れて連結されます。
array.join() 引数なしの場合は "," と同じです。 array.join(",") カンマ区切りの文字列になる。 array.join("") 区切り文字をなし (空文字) にして連結する。 array.join(" ") スペース区切りの文字列になる。 array.join("\t") タブ区切りの文字列になる。 array.join("\n") 改行して連結する。
- TestJS_string_array_join01.html
配列 Array の文字列や数値を連結して 1つの文字列にする。 - TestJS_string_array_join02.html
Array.join() のサンプル。
- TestJS_array_map_toText02.html
配列をテキストに変換するときに配列の要素をダブルクォート " で括る。
Array.map(), アロー関数、テンプレートリテラルなど。
文字列を置換する (1)
2重配列を文字列に変換する
- TestJS_array_map_toText01.html
2重配列を 1つの文字列に変換する。Array.map() のサンプル。
JavaScript: 考古学
いろいろ
- Array.push()、Array.join() で処理する話は、Java、C# の StringBuffer, StringBuilder の処理に相当します。
- アロー関数やテンプレートリテラルは IE では動作しません。
ソースコードの文字列が複数行にまたがる場合
テキストデータを JavaScript の文字列のコードに入れる場合は、 ES2015 リテラル `文字列` を使うのが簡単です。
- TestJS_string_escape02.html
複数行にまたがる文字列のコード。
下のコードは文法エラーになります
//文法エラー。"" で記述された文字列が複数行に分かれている。 let s = "文字列1 文字列2 文字列3 文字列4";
書き方
1つの文字列を複数行に分けて書きたい場合、 下のような書き方があります。
//こちらは文法エラーになりません。文字列を + で連結する。 let s = "文字列1" + "文字列2" + "文字列3" + "文字列4";
上のコードはエラーになりませんが書くのが面倒です。 ES2015 リテラルで記述すると簡単になります。
//こちらは文法エラーなりません。改行コードも反映されます。 let s = ` 文字列1 文字列2 文字列3 文字列4 `; //上と同じ let s = "\n文字列1\n文字列2\n文字列3\n文字列4\n";
その他
文字連結の処理時間
- TestJS_string_concat_time01.html
文字連結の処理時間のサンプル。今の時代、細かい違いは気にしません。
JavaScript: 計算、処理時間など
JavaScript: Java の人向けの話