JavaScript 入門 | 標準オブジェクト | String メソッド
String メソッド
String メソッドは、String オブジェクトに定義された文字列関連の作業を行うときに使用するメソッドである。
- String.fromCharCode()
- String.fromCodePoint()
String.fromCharCode() メソッド
このメソッドは、カンマで区切られた一連の Unicode に該当する文字で構成された文字列を返す。
String.fromCharCode(65, 66, 67); // "ABC"
String.fromCodePoint() メソッド
このメソッドは、カンマで区切られた一連のコードポイント (code point) に該当する文字で構成された文字列を返す。
String.fromCodePoint(65, 66, 67); // "ABC"
String.fromCodePoint(0x2F804); // "\uD87E\uDC04"
String.fromCodePoint(194564); // "\uD87E\uDC04"
String.fromCodePoint() メソッドは Safari、Internet Explorer ではサポートされない。
JavaScript String メソッド
| メソッド | 説明 |
|---|---|
| String.fromCharCode() | カンマで区切られた一連の Unicode に該当する文字で構成された文字列を返す。 |
| String.fromCodePoint() | カンマで区切られた一連のコードポイント (code point) に該当する文字で構成された文字列を返す。 |
| String.raw() | テンプレート文字列 (template string) の原型を返す。 |
String.prototype メソッド
すべての String インスタンスは String.prototype からメソッドとプロパティを継承する。
このように継承した String.prototype メソッドを利用すると、次のような文字列操作ができる。
- 文字列での位置を返す
- 文字列で指定された位置にある文字を返す
- 文字列の抽出
- 文字列の分離
- 文字列の結合
- 文字列の大文字小文字変換
- 文字列周辺の空白除去
- 正規表現を利用した文字列操作
String インスタンスの値は変更できない (immutable) ため、すべての String メソッドは結果値として新しい文字列を生成して返す。
文字列での位置を探す
次のメソッドは、String インスタンスで特定の文字や文字列が最初に登場する位置、または最後に登場する位置を返す。
- indexOf()
- lastIndexOf()
これらのメソッドには、文字列を探し始める String インスタンスの位置を 2 番目の引数として渡すことができる。
渡された特定の文字や文字列を見つけられない場合は -1 を返す。
var str = "abcDEFabc";
str.indexOf('abc'); // 0 -> JavaScript でインデックスは 0 から始まる。
str.indexOf('abcd'); // -1 -> 文字列を比較するときは文字の大文字小文字を区別する。
str.indexOf('abc', 3); // 6 -> インデックス 3 から 'abc' を探し始める。
str.lastIndexOf('abc'); // 6
str.lastIndexOf('d'); // -1
str.lastIndexOf('c'); // 8
文字列で指定された位置にある文字を返す
次のメソッドは、String インスタンスで渡されたインデックスに位置する文字や文字コードを返す。
- charAt()
- charCodeAt()
- codePointAt()
var str = "abcDEFabc";
str.charAt(0); // a
str.charAt(10); // 空文字列 -> 渡されたインデックスが文字列の長さより大きい場合は空文字列を返す。
str.charCodeAt(0); // 97 -> 'a' に該当する UTF-16 コードを返す。
str.codePointAt(0); // 97 -> 'a' に該当する Unicode コードポイントを返す。
codePointAt() メソッドは Safari、Internet Explorer ではサポートされない。
文字列の抽出
次のメソッドは、String インスタンスで渡された開始インデックスから終了インデックスの直前までの文字列だけを抽出して作った新しい文字列を返す。
- slice()
- substring()
- substr()
var str = "abcDEFabc";
str.slice(2, 6); // cDEF -> インデックス 2 からインデックス 5 までの文字列を抽出する。
str.slice(-4, -2); // Fa -> 負数で渡されたインデックスは文字列の後ろから始まる。
str.slice(2); // abcDEFab -> 引数として終了インデックスが渡されなければ文字列の最後まで抽出する。
str.substring(2, 6); // cDEF
str.substr(2, 4); // cDEF
文字列の分離
次のメソッドは、String インスタンスを区切り文字 (separator) を基準に分けた後、分けられた文字列を 1 つの配列として返す。
- split()
split() メソッドは、引数として区切り文字を渡さなければ、文字列全体を 1 つの配列要素として持つ長さ 1 の配列を返す。
var str = "JavaScript はとても素晴らしいです! そして便利です。";
str.split(); // 区切り文字を明示しなければ何も動作しない。
str.split(""); // 1 文字 ("") ずつ分ける。
str.split(" "); // 空白 (" ") を基準に分ける。
str.split("!"); // 感嘆符 ("!") を基準に分ける。
文字列の結合
次のメソッドは、String インスタンスに渡された文字列を結合した新しい文字列を返す。
- concat()
var str = "JavaScript";
str; // JavaScript
str.concat(" はとても素晴らしいです!"); // JavaScript はとても素晴らしいです!
str.concat(" はとても素晴らしいです!", " そして便利です。"); // JavaScript はとても素晴らしいです! そして便利です。
str; // JavaScript
上の例で、concat() メソッドを何度実行した後でも、変数 str の文字列は最初と変わらない。 このように JavaScript で String インスタンスの値は変更できない (immutable)。 したがって、すべての String メソッドは結果値として新しい文字列を生成して返す。
文字列の大文字小文字変換
次のメソッドは、String インスタンスのすべての文字を大文字または小文字へ変換した新しい文字列を返す。
- toUpperCase()
- toLowerCase()
var str = "JavaScript";
str.toUpperCase(); // JAVASCRIPT
str.toLowerCase(); // javascript
文字列周辺の空白除去
次のメソッドは、String インスタンスの両端に存在するすべての空白と改行文字 (LF、CR など) を除去した新しい文字列を返す。
- trim()
trim() メソッドは、String インスタンスの文字列値そのものには影響しない。
var str = " JavaScript ";
str.trim();
正規表現を利用した文字列操作
次のメソッドは、引数として渡された正規表現を利用し、String インスタンス値で検索、照合、置換などの作業を行う。
- search()
- match()
- replace()
JavaScript String.prototype メソッド
| メソッド | 説明 |
|---|---|
| indexOf() | String インスタンスで特定の文字や文字列が最初に登場する位置のインデックスを返す。 |
| lastIndexOf() | String インスタンスで特定の文字や文字列が最後に登場する位置のインデックスを返す。 |
| charAt() | String インスタンスで渡されたインデックスに位置する文字を返す。 |
| charCodeAt() | String インスタンスで渡されたインデックスに位置する文字の UTF-16 コードを返す。(0 ~ 65535) |
| codePointAt() | String インスタンスで渡されたインデックスに位置する文字の Unicode コードポイント (unicode code point) を返す。 |
| slice() | String インスタンスで渡された開始インデックスから終了インデックスの直前までの文字列を抽出した新しい文字列を返す。 |
| substring() | String インスタンスで渡された開始インデックスから終了インデックスの直前までの文字列を抽出した新しい文字列を返す。 |
| substr() | String インスタンスで渡された開始インデックスから長さ分の文字列を抽出した新しい文字列を返す。 |
| split() | String インスタンスを区切り文字 (separator) を基準に分けた後、分けられた文字列を 1 つの配列として返す。 |
| concat() | String インスタンスに渡された文字列を結合した新しい文字列を返す。 |
| toUpperCase() | String インスタンスのすべての文字を大文字へ変換した新しい文字列を返す。 |
| toLowerCase() | String インスタンスのすべての文字を小文字へ変換した新しい文字列を返す。 |
| trim() | String インスタンスの両端に存在する空白とすべての改行文字 (LF、CR など) を除去した新しい文字列を返す。 |
| search() | 引数として渡された正規表現に合う文字や文字列が最初に登場する位置のインデックスを返す。 |
| replace() | 引数として渡されたパターンに合う文字列を置換文字列へ変換した新しい文字列を返す。 |
| match() | 引数として渡された正規表現に合う文字列を探して 1 つの配列として返す。 |
| includes() | 引数として渡された文字や文字列が含まれているかを検査し、その結果を boolean 値で返す。 |
| startsWith() | 引数として渡された文字や文字列で始まるかを検査し、その結果を boolean 値で返す。 |
| endsWith() | 引数として渡された文字や文字列で終わるかを検査し、その結果を boolean 値で返す。 |
| toLocaleUpperCase() | 英文字だけでなく、すべての言語の文字を大文字へ変換した新しい文字列を返す。 |
| toLocaleLowerCase() | 英文字だけでなく、すべての言語の文字を小文字へ変換した新しい文字列を返す。 |
| localeCompare() | 引数として渡された文字列と並び順で比較し、その結果を整数値で返す。 |
| normalize() | その文字列の Unicode 正規化形式 (Unicode Normalization Form) を返す。 |
| repeat() | その文字列を引数として渡された回数だけ繰り返して結合した新しい文字列を返す。 |
| toString() | String インスタンスの値を文字列として返す。 |
| valueOf() | String インスタンスの値を文字列として返す。 |