JavaScript - 文字列

文字列

文字列は Unicode の文字コードで表現される 16 ビット (U+0000U+FFFF) のデータの集合体です。文字列は位置情報を保有しており、最初の文字には 0 がインデックスされています。ただし、文字列の長さは 1 からカウントします。

//   0   1   2   3   4 :インデックス
//   1   2   3   4   5 :文字列の長さ
//  [H] [e] [l] [l] [o]
var str = "Hello";

str[1];     // e を返す
str.length; // 5 を返す
インデックスと文字列の長さ

文字列リテラル

JavaScript で文字列リテラルを表現する場合は、' または " で文字列を囲みます。文字列の中に '" を含む場合は、種類の違う引用符を使うか、エスケープを行う必要があります。

"It always seems impossible until it’s done.";
'何事も成功するまでは不可能に思えるものである。- Nelson Mandela';
文字列リテラル

多くの場合、文字列リテラルは単一行で表現されますが、複数行にも分割できます。複数行に分割するには、各行の末尾に \ を付けます。

const multiline = "1行目\
2行目";
console.log(multiline);

/* 実行結果
1行目2行目
*/
文字列リテラルを複数行に分割する

文字列リテラルを複数行に分割しても、実態は改行されていない点に注意してください。もしも文字列リテラルに改行コードを含める場合は \n を記述します。改行コードの詳細は、エスケープシーケンスを参照して下さい。

const multiline = "1行目\n\
2行目";
console.log(multiline);

/* 実行結果
1行目
2行目
*/
文字列リテラルを複数行に分割する

改行をそのまま出力する場合は ` で文字列を囲みます。

const multiline = `1行目
2行目`;
console.log(multiline);

/* 実行結果
1行目
2行目
*/
文字列リテラルを複数行に分割する

ただし、いずれの方法も行頭のインデント (字下げ) が文字列に反映される点に注意してください。

const multiline = `1行目
    2行目
    3行目`;    
console.log(multiline);

/* 実行結果
1行目
    2行目
    3行目
*/
文字列リテラルを複数行に分割する

エスケープシーケンス

文字列リテラルをエスケープする場合は、対象の文字の直前にバックスラッシュ \ を付けます。

'It always seems impossible until it\’s done.';
文字列リテラルのエスケープ

文字以外にも制御文字などもエスケープシーケンスを用いて表現が可能です。

\0         NULL 文字		(\u0000)
\b         バックスペース	(\u0008)
\t         水平タブ		(\u0009)
\n         改行			(\u000A)
\v         垂直タブ		(\u000B)
\f         改ページ		(\u000C)
\r         復帰			(\u000D)
\"         二重引用符		(\u0022)
\'         単一引用符		(\u0027)
\\         バックスラッシュ	(\u005C)
\xXX       2 桁の 16 進数 XX で指定する Latin-1 文字
\uXXXX     4 桁の 16 進数 XXXX で指定する Unicode 文字
エスケープシーケンス

テンプレートリテラル

テンプレートリテラルは、文字列の中に変数などの値を含める場合に用います。テンプレートリテラルでは文字列を一組の ` で囲みます。テンプレートリテラルでは $ が特別な文字として扱われます。変数や定数を ${...} で囲むと、その変数や定数の値が文字列に挿入されます。

let currentTemp = 19.5;
const message = `現在の温度は${currentTemp}℃です。`;

console.log(message); // 現在の温度は19.5℃です。
テンプレートリテラル

文字列の操作

JavaScript には文字列を操作するさまざまな機能が備わっています。

let str = "Hello, " + "world"; // Hello, world
str[0];                        // H
str[str.length-1];             // d
str.charAt(0);                 // H
str.charAt(str.length-1);      // d
str.substring(0,5);            // Hello
str.slice(0,5);                // Hello
str.slice(-5);                 // world
str.indexOf("l");              // 2
str.lastIndexOf("l");          // 10
str.split(", ");               // ["Hello", "world"]
str.replace("H","h");          // hello, world
str.toLowerCase();             // hello, world
str.toUpperCase();             // HELLO, WORLD
文字列の操作

パターンマッチング

JavaScript には、テキストパターンを表すオブジェクトを生成するために RegExp() コンストラクタが定義されています。また、文字列を / で囲むことで、正規表現リテラルとして記述することもできます。

postcode = '123-4567';

// RegExp() コンストラクタ
pattern = new RegExp(/^\d{3}-?\d{4}$/, "g");
result = pattern.test(postcode);
console.log(result); // true

// 正規表現リテラル
pattern = /^\d{3}-?\d{4}$/g;
result = postcode.match(pattern);
console.log(result); // ["123-4567"]
パターンマッチング

関連記事

JavaScript のまとめページはプログラミング JavaScript 入門を参照してください。

Category:
プログラミング
公開日:
更新日:
Pageviews:
49
Shares:
1
Tag:
JavaScript
hatebu icon
hatebu