String【文字列】オブジェクト
目次: メモ サロゲートペア リテラル コンストラクタ・型変換 プロパティ メソッド一覧 HTML関連メソッド 例 (プロパティ) 関連
メモ
- 文字列を表す オブジェクト
- クラス定義による継承可能
- String型【文字列型】も同等の処理が可能 (一時的に String【文字列】オブジェクト を作成)
- リテラル値:リテラルを参照
- テンプレートリテラル :変数等を含んだフォーマットが容易
- 変換:
- 文字列 ⇔ 数値 :Number【数値】オブジェクト 参照
- 文字列 ⇔ 日時 :Date【日時】オブジェクト 参照
- 比較:
- 比較 演算子 (< 【小なり 演算子】等)
- ロケール考慮の場合、localeCompare【文字列比較 (ロケール)】
- 以下の部分文字列の違いについては各メソッド参照
- slice【部分文字列 (末尾からの指定可)】 :末尾からの指定可・先頭位置と終了位置の逆転不可
- substr【部分文字列 (文字長指定)】
- substring【部分文字列】 :先頭からの指定のみ・先頭位置と終了位置の逆転可
- 正規表現及び、正規表現の指定が可能な下記メソッド以外については、 RegExp【正規表現】オブジェクトを参照
サロゲートペア
| コード | サロゲートペア |
|---|---|
| U+10000 〜 U+10FFFF | ハイサロゲート:U+D800 〜 U+DBFF ローサロゲート:U+DC00 〜 U+DFFF |
処理は未対応 ([@@iterator]【イテレータ作成】で対応)
| 文字列 (例) | コード | length 【文字数】 | charCodeAt() 【指定位置のUnicode値】 | codePointAt() 【指定位置のコードポイント値】 | |
|---|---|---|---|---|---|
| 叱る | 叱:U+53F1 (第1水準) | る:U+308B | 2 | 53f1・308b | 53f1・308b |
| 𠮟る | 𠮟:U+20B9F (第3水準) | る:U+308B | 3 (不備) | d842・df9f・308b (不備) | 20b9f・df9f・308b (不備) |
リテラル (文字列リテラル・テンプレートリテラル ・タグ付きテンプレート )
リテラル
| リテラル | 説明 | 記述 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 使用不可文字 | 改行 | 変数・式の挿入 | ||||||||||
| '【文字列】' | 文字列リテラル エスケープしていない U+000A・U+000D・U+005C は不許可 U+2028・U+2029 を許可 (詳細は、JSON オブジェクト 参照) | ' (\' を使用) | \n | +【加算・文字列結合 演算子】 | ||||||||
| "【文字列】" | " (\" を使用) | |||||||||||
| `【文字列】` | テンプレートリテラル | ` (\` を使用) \n~n (8進数) | \n・改行 | ${【変数・式】} +【加算・文字列結合 演算子】 | ||||||||
| タグ関数`【文字列】` | タグ付きテンプレートリテラル 不正なエスケープシーケンスは、SyntaxError例外 ではなく undefined (LaTeX の\unicode コマンド等に対応) タグ関数の詳細
| ${【変数・式】} | ||||||||||
- ※「行の最終文字が単独の \ の場合、次の行は結合」が文字列リテラル内で有効 (下記 例 参照)
- ※次のC言語系の仕様は適用されない為、複数行にまたがる場合は +【加算・文字列結合 演算子】を使用
「連続した 文字列リテラル は結合」
| エスケープシーケンス | コード | 名称・備考 | シンボル | |
|---|---|---|---|---|
| \b | 0x0008 | バックスペース | BACKSPACE | <BS> |
| \t | 0x0009 | 水平タブ | CHARACTER TABULATION horizontal tab | <HT> |
| \n | 0x000A | 改行 ラインフィード | LINE FEED newline | <LF> |
| \v | 0x000B | 垂直タブ | LINE TABULATION | <VT> |
| \f | 0x000C | 改ページ フォームフィード | FORM FEED | <FF> |
| \r | 0x000D | 復帰 キャリッジリターン | CARRIAGE RETURN | <CR> |
| \" | 0x0022 | クォーテーションマーク ダブルクォート | QUOTATION MARK double quote | " |
| \' | 0x0027 | アポストロフィー シングルクォート | APOSTROPHE single quote | ' |
| \\ | 0x005C | バックスラッシュ 円記号 | REVERSE SOLIDUS backslash | \ |
| \n~n | 8進数 | \n~n ≦ 0xFF (strictモードでは使用不可) | ||
| \xHH | 0xHH | |||
| \uHHHH | 0xHHHH | |||
| \u{H~H} | 0xH~H | 有効範囲:0xH~H ≦ 0x10FFFF | ||
- ※H:16進数
例
var str = "(STRING)";
var str1 = str + '\'文字列1\'\n"文字列2"\n`文字列3`' + str;
var str2 = str + "'文字列1'\n\"文字列2\"\n`文字列3`" + str;
var str3 = `${str}'文字列1'\n"文字列2"
\`文字列3\`` + str;
console.log(str1 === str2); // 出力:true
console.log(str2 === str3); // 出力:true
console.log(str3 === str1); // 出力:true
console.log(str1);
// 出力:(STRING)'文字列1'
// "文字列2"
// `文字列3`(STRING)
var str4 = "文字列1\
文字列2";
console.log(str4);
// 出力:文字列1文字列2
var numA = 2;
var numB = 3;
var strT = `${numA} * ${numB} = ${numA * numB}`;
console.log(strT);
// 出力:2 * 3 = 6
/**
* タグ関数
* @param {string[]} strings 文字列リテラルの配列
* @param {...string} values ${【変数・式】} の展開結果
* @return {string} 展開した文字列
*/
function tag(strings, ...values) {
console.log(`tag:strings.length = ${strings.length}`);
for (var i = 0; i < strings.length; i++) {
console.log(`tag:${i}:[${strings[i]}]`);
}
console.log(`tag:values.length = ${values.length}`);
for (var i = 0; i < values.length; i++) {
console.log(`tag:${i}:[${values[i]}]`);
}
var str = "";
for (let i = 0; i < values.length; i++) {
str += strings[i];
str += values[i];
}
str += strings[strings.length - 1];
return str;
}
var numA = 2;
var numB = 3;
console.log(tag`(${numA} * 10) + ${numB} = ${(numA * 10) + numB}`);
// 出力:tag:strings.length = 4
// 出力:tag:0:[(]
// 出力:tag:1:[ * 10) + ]
// 出力:tag:2:[ = ]
// 出力:tag:3:[]
// 出力:tag:values.length = 3
// 出力:tag:0:[2]
// 出力:tag:1:[3]
// 出力:tag:2:[23]
// 出力:(2 * 10) + 3 = 23
コンストラクタ・型変換
| メソッド | 説明 |
|---|---|
| new String ( [ value ] ) | コンストラクタ |
| String ( [ value ] ) | 型変換 |
プロパティ
| プロパティ | 説明 | 備考 | |
|---|---|---|---|
| [数値インデックス] | 文字アクセス | 下記 例 参照 参考:charAt【指定位置の文字】 | |
| String.prototype. | constructor | コンストラクタ定義 | 下記 例 参照 |
| length | 文字数 | 下記 例 参照 | |
| String. | prototype | プロトタイプ | 下記 例 参照 |
メソッド一覧
| メソッド | 説明 | |
|---|---|---|
| String.prototype. | [@@iterator] () | コードポイント値のイテレータオブジェクト作成 |
| String.prototype. | charAt ( pos ) | 指定位置の文字 |
| String.prototype. | charCodeAt ( pos ) | 指定位置のUnicode値 |
| String.prototype. | codePointAt ( pos ) | 指定位置のコードポイント値 |
| String.prototype. | concat ( ...args ) | 文字列連結 |
| String.prototype. | endsWith ( searchString [ , endPosition] ) | 終了文字列判定 |
| String. | fromCharCode ( ...codeUnits ) | Unicode値から文字列生成 |
| String. | fromCodePoint ( ...codePoints ) | コードポイント値から文字列生成 |
| String.prototype. | includes ( searchString [ , position ] ) | 部分文字列判定 |
| String.prototype. | indexOf ( searchString, position ) | 順方向 文字列検索 |
| String.prototype. | lastIndexOf ( searchString, position ) | 逆方向 文字列検索 |
| String.prototype. | localeCompare ( that ) localeCompare ( that [, reserved1 [ , reserved2 ] ] ) | 文字列比較 (ロケール) |
| String.prototype. | match ( regexp ) | 正規表現検索 (詳細) |
| String.prototype. | normalize ( [ form ] ) | 正規化 |
| String.prototype. | padEnd ( maxLength [ , fillString ] ) | 末尾パディング |
| String.prototype. | padStart ( maxLength [ , fillString ] ) | 先頭パディング |
| String. | raw ( template , ...substitutions ) | 生の文字列取得 |
| String.prototype. | repeat ( count ) | 文字列の繰り返し |
| String.prototype. | replace ( searchValue, replaceValue ) | 置換 (正規表現可) |
| String.prototype. | search ( regexp ) | 正規表現検索 (簡易) |
| String.prototype. | slice ( start [, end] ) | 部分文字列 (末尾からの指定可・先頭位置と終了位置の逆転なし) |
| String.prototype. | split ( [separator [, limit]] ) | 分割 (正規表現可) |
| String.prototype. | startsWith ( searchString [, position ] ) | 開始文字列判定 |
| String.prototype. | substr ( start [, length] ) | 部分文字列 (文字長指定) |
| String.prototype. | substring ( start [, end] ) | 部分文字列 (先頭からの指定のみ・先頭位置と終了位置の逆転あり) |
| String.prototype. | toLocaleLowerCase () toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] ) | 小文字変換 (現在ロケール) |
| String.prototype. | toLocaleUpperCase () toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] ) | 大文字変換 (現在ロケール) |
| String.prototype. | toLowerCase () | 小文字変換 |
| String.prototype. | toString () | 文字列変換 |
| String.prototype. | toUpperCase () | 大文字変換 |
| String.prototype. | trim () | 両端の空白削除 |
| String.prototype. | trimEnd ( ) | 末尾の空白削除 |
| String.prototype. | trimLeft () | 左端の空白削除 |
| String.prototype. | trimRight () | 右端の空白削除 |
| String.prototype. | trimStart ( ) | 先頭の空白削除 |
| String.prototype. | valueOf () | String型変換 |
HTML関連メソッド
| メソッド | 説明 | |
|---|---|---|
| String.prototype. | anchor ( name ) | ハイパーリンク (<a name>) |
| String.prototype. | big () | 大きな文字 (<big>) HTML5 廃止 |
| String.prototype. | blink () | ブリンク (<blink>) 廃止 |
| String.prototype. | bold () | 太字 (<b>) |
| String.prototype. | fixed () | 等幅フォント (<tt>) HTML5 廃止 |
| String.prototype. | fontcolor ( color ) | フォント色 (<font color>) HTML5 廃止 |
| String.prototype. | fontsize ( size ) | フォントサイズ (<font size>) HTML5 廃止 |
| String.prototype. | italics () | イタリック体 (<i>) |
| String.prototype. | link ( url ) | ハイパーリンク (<a href>) |
| String.prototype. | small () | 小さな文字 (<small>) |
| String.prototype. | strike () | 取り消し線 (<strike>) HTML5 廃止 |
| String.prototype. | sub () | 下付き文字 (<sub>) |
| String.prototype. | sup () | 上付き文字 (<sup>) |
例 (プロパティ)
console.log(String.prototype);
// 出力:String
// 出力: anchor:anchor()
// 出力: big:big()
// 出力: 省略
// 出力: Symbol(Symbol.iterator):[Symbol.iterator]()
// 出力: __proto__:Object
// 出力: [[PrimitiveValue]]:""
var str = "あいうえお";
console.log(str[2]);
// 出力:う
console.log(str.constructor);
// 出力:function String() { [native code] }
console.log(str.length);
// 出力:5
関連
- ECMAScript 5.1 (英語)
- ECMAScript 2015 (6) (英語)
- 11.8.4 String Literals
- B.1.2 String Literals
- 12.2.9 Template Literals
- 12.3.7 Tagged Templates
- 21.1.2.4 String.raw ( template , ...substitutions )
- 21.1 String Objects
- 9.4.3 String Exotic Objects
- 9.4.3.1 [[GetOwnProperty]] ( P )
- 21.1.3.5 String.prototype.constructor
- 21.1.4.1 length
- 21.1.2.3 String.prototype
- ECMAScript 2016 (7) (英語)
- 11.8.4 String Literals
- B.1.2 String Literals
- 12.2.9 Template Literals
- 12.3.7 Tagged Templates
- 21.1.2.4 String.raw ( template, ...substitutions )
- 21.1 String Objects
- 9.4.3 String Exotic Objects
- 9.4.3.1 [[GetOwnProperty]] ( P )
- 21.1.3.5 String.prototype.constructor
- 21.1.4.1 length
- 21.1.2.3 String.prototype