String【文字列】オブジェクト
メモ サロゲートペア リテラル コンストラクタ・型変換 プロパティ メソッド一覧 HTML関連メソッド 例 (プロパティ) 外部リンク
メモ
- 文字列を表す オブジェクト
- クラス定義による継承可能
- String型【文字列型】も同等の処理が可能 (一時的に String【文字列】オブジェクト を作成)
- リテラル値:リテラルを参照
- テンプレートリテラル :変数等を含んだフォーマットが容易
- 連結:
- + 演算子
- += 演算子
- 比較:
- 比較 演算子 (< 【小なり 演算子】等)
- ロケール考慮の場合、localeCompare【文字列比較 (ロケール)】
- 変換:
- 文字列 ⇔ 数値 :Number【数値】オブジェクト 参照
- 文字列 ⇔ 日時 :Date【日時】オブジェクト 参照
- 以下の部分文字列の違いについては各メソッド参照
- 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. | matchAll ( 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. | replaceAll ( 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 (英語)
String Literals ES2021 (12) ES2020 (11) ES2019 (10) Additional Syntax - String Literals ES2021 (12) ES2020 (11) ES2019 (10) Template Literals ES2021 (12) ES2020 (11) ES2019 (10) Tagged Templates ES2021 (12) ES2020 (11) ES2019 (10) String.raw ( template, ...substitutions ) ES2021 (12) ES2020 (11) ES2019 (10) String Objects ES2021 (12) ES2020 (11) ES2019 (10) String Exotic Objects ES2021 (12) ES2020 (11) ES2019 (10) [[GetOwnProperty]] ( P ) ES2021 (12) ES2020 (11) ES2019 (10) String.prototype.constructor ES2021 (12) ES2020 (11) ES2019 (10) length ES2021 (12) ES2020 (11) ES2019 (10) String.prototype ES2021 (12) ES2020 (11) ES2019 (10)