概要:このチュートリアルでは、JavaScriptのstring
プリミティブ型と、それを使って文字列を定義する方法について学びます。
JavaScript文字列入門
JavaScriptの文字列はプリミティブ値です。また、文字列はイミュータブル(不変)です。つまり、文字列を修正すると、常に新しい文字列が得られます。元の文字列は変更されません。
文字列リテラルを作成するには、次のようにシングルクォート('
)またはダブルクォート("
)を使用します。
let str = 'Hi';
let greeting = "Hello";
Code language: JavaScript (javascript)
ES6では、バッククォート(`)文字で文字列を定義できるテンプレートリテラルが導入されました。
let name = `John`;
Code language: JavaScript (javascript)
テンプレートリテラルを使用すると、エスケープする必要なく、文字列内でシングルクォートとダブルクォートを使用できます。例:
let mesage = `"I'm good". She said";
Code language: JavaScript (javascript)
また、テンプレートリテラル内には、変数や式を配置できます。JavaScriptは、文字列内の変数をその値に置き換えます。これは文字列補間と呼ばれます。例:
let name = 'John';
let message = `Hi, I'm ${name}.`;
console.log(message);
Code language: JavaScript (javascript)
出力
Hi, I'm John.
Code language: JavaScript (javascript)
この例では、JavaScriptはテンプレートリテラル内のname
変数をその値に置き換えます。
特殊文字のエスケープ
特殊文字をエスケープするには、バックスラッシュ\
文字を使用します。例:
- Windows改行:
'\r\n'
- Unix改行:
'\n'
- タブ:
'\t'
- バックスラッシュ
'\'
次の例では、バックスラッシュ文字を使用して、文字列内のシングルクォート文字をエスケープしています。
let str = 'I\'m a string!';
Code language: JavaScript (javascript)
文字列の長さを取得する
length
プロパティは、文字列の長さを返します。
let str = "Good Morning!";
console.log(str.length); // 13
Code language: JavaScript (javascript)
JavaScriptには、String
型(大文字のS
を使用)があり、これはプリミティブなstring
型のプリミティブラッパー型であることに注意してください。したがって、プリミティブな文字列からString型のすべてのプロパティとメソッドにアクセスできます。
文字へのアクセス
文字列内の文字にアクセスするには、ゼロベースのインデックスを持つ配列のような[]
表記を使用します。次の例では、インデックス0を持つ文字列の最初の文字を返します。
let str = "Hello";
console.log(str[0]); // "H"
Code language: JavaScript (javascript)
文字列の最後の文字にアクセスするには、length - 1
インデックスを使用します。
let str = "Hello";
console.log(str[str.length -1]); // "o"
Code language: JavaScript (javascript)
+演算子による文字列の連結
2つ以上の文字列を連結するには、+
演算子を使用します。
let name = 'John';
let str = 'Hello ' + name;
console.log(str); // "Hello John"
Code language: JavaScript (javascript)
文字列を少しずつ組み立てたい場合は、+=
演算子を使用できます。
let className = 'btn';
className += ' btn-primary'
className += ' none';
console.log(className);
Code language: JavaScript (javascript)
出力
btn btn-primary none
Code language: JavaScript (javascript)
値を文字列に変換する
文字列以外の値を文字列に変換するには、次のいずれかを使用します。
- String(n);
- ” + n
- n.toString()
toString()
メソッドはundefined
とnull
には機能しないことに注意してください。
文字列をブール値に変換した場合、元に戻すことはできません。例:
let status = false;
let str = status.toString(); // "false"
let back = Boolean(str); // true
Code language: JavaScript (javascript)
この例では
- 最初に、
status
変数を宣言し、false
の値で初期化します。 - 次に、
toString()
メソッドを使用して、ステータス変数を文字列に変換します。 - 3番目に、
Boolean()
関数を使用して文字列をブール値に戻します。Boolean()
関数は、文字列"false"
をブール値に変換します。結果は、"false"
が空ではない文字列であるため、trueになります。
Boolean()
がfalse
を返す文字列は、空文字列(''
)のみであることに注意してください。
文字列の比較
2つの文字列を比較するには、>
、>=
、<
、<=
、および==
演算子などの比較演算子を使用します。
比較演算子は、文字の数値に基づいて文字列を比較します。そのため、辞書で使用される順序とは異なる文字列順序が返される場合があります。例:
let result = 'a' < 'b';
console.log(result); // true
Code language: JavaScript (javascript)
ただし
let result = 'a' < 'B';
console.log(result); // false
Code language: JavaScript (javascript)
まとめ
- JavaScriptの文字列はプリミティブ値であり、不変です。
- 文字列リテラルは、シングルクォート(
'
)、ダブルクォート("
)、またはバッククォート(`)で区切られます。 length
プロパティは、文字列の長さを返します。- 文字列を比較するには、比較演算子
>, >=, <, <=, ==
を使用します。