gorogoronyan FC2

JavaScript: 文字列を作成する (1)

文字列を作成する方法

  1. 文字列を + 演算子で連結したりテンプレートリテラルで合成したりする。
    初歩的な話や用途が限定されている話で使用します。 はじめの一歩ではこちらだけ眺めれば十分です。
  2. 雛形になる文字列 (テンプレート) を用意して置換する。
    置換処理を多用します。テンプレートのカスタマイズが容易になります。 ただし、正規表現やコールバック処理など難しい話が出てきます。
  3. さらに濃い話になるとテンプレート文字列をプログラムとは別の外部リソースファイルに分離して 日本語版、英語版など多言語に対応できるようにする 国際化対応 (i18n) の話も出てきます。
    国際化対応, i18n

テンプレートリテラルで文字列を作る

テンプレート文字列を String.replcae() で置換する

%s を含むテンプレートを逐次置換する例

%s を含むテンプレート文字列を用意して これを変数の文字列に置換します。

上のサンプルは 正規表現コールバック を含むプログラムで、 はじめの一歩だと分かりにくい処理になります。 詳しい説明は下を見てください。

%1, %2, ... を含むテンプレートを逐次置換する例

国際化対応 (i18n)

Web アプリケーションによっては日本語用、英語用、 中国語用などさまざまな言語に対応させたい話も出てきます (国際化対応, i18n)。 このようなプログラムでははじめから国際化対応を意識した作り方をします。

例えば下のようなプログラムは国際化対応ではありません。

// 国際化対応ではないプログラムの例
// プログラムの中に日本語のメッセージをそのまま書いてある。
// 英語など他の言語には使えない。
let message = `私の名前は ${name} です。`; 

国際化対応を考慮したプログラムでは プログラムの中にダイアログなどのメッセージ文字列を直接入れず、 外部のリソースに分離します。 言語別 (日本語用、英語用など) のリソースファイルを用意して、 使用したい言語に切り替えてアプリケーションに表示するといった処理を行います。 このような話は Java や C# など他のプログラミング言語でも出てきます。

テンプレートリテラルは外部リソースに分離できません

テンプレートリテラルだとメッセージなどの文字列を外部リソースに分離できません。 プログラムの中に直接メッセージ文字列を入れる ハードコーディングな書き方しかできません。

テンプレート文字列を置換する方法の場合は、 テンプレート文字列を外部のリソースファイルに分離することができます。 テンプレート文字列だけ編集し直してカスタマイズすることも容易になります。 プログラムコードを直接眺めたり修正したりする必要がなくなります。

HTML テキストを作成する例

TestJS_html_create_template01.html
HTML を作成する単純なサンプル。 HTML を雛形と本文に分けて用意し、置換処理で 1つの HTML に合成します。
TestJS_html_create_template03.html
HTML のテンプレートと本文を合成する処理を Web ツール風にしたサンプル。

HTML 要素を作成する

HTML テキストではなくて、table や ul などの HTML 要素 (HTMLElement) のオブジェクトを作成してドキュメントツリーを作る話もあります。 こちらは静的な HTML の作成ではなく Web アプリケーションで動的に HTML 要素を追加したり削除したりする話になります。

関連

inserted by FC2 system