recursal/MDN huggingface dataset:
String.prototype.lastIndexOf()
==============================

**`lastIndexOf()`** は `String` 値のメソッドで、この文字列を検索し、指定した部分文字列が最後に出現するインデックスを返します。オプションで開始位置を取り、指定した数値以下のインデックスにおいて、指定した部分文字列が最後にに出現するインデックスを返します。

試してみましょう
--------

構文
--


```js
lastIndexOf(searchString)
lastIndexOf(searchString, position)
```

### 引数

* `searchString`
    + : 検索する値を表す文字列です。すべての値は文字列に変換されますので、省略したり `undefined` を渡したりすると、`lastIndexOf()` は `"undefined"` という文字列を検索します。これはおそらく望むところではないでしょう。
* `position` 省略可
    + : このメソッドは、`position`（既定値は `0`）以下の位置で、指定した部分文字列が最後に現れるインデックスを返します。`position` が呼び出された文字列の長さよりも大きい場合、このメソッドは呼び出される文字列をまったく検索しません。`position` が 0 未満の場合、このメソッドは `0` と同じように動作します。すなわち、このメソッドは指定された文字列をインデックス `0` でのみ検索します。
        - `'hello world hello'.lastIndexOf('world', 4)` は `-1` を返します。部分文字列 `world` が現れるのは `6` のインデックスですが、その位置は `4` 以下ではないからです。
        - `'hello world hello'.lastIndexOf('hello', 99)` は `12` を返します。部分文字列 `hello` が最後に現れる位置が、`99` 以下である `12` の位置だからです。
    + `'hello world hello'.lastIndexOf('hello', 0)` と `'hello world hello'.lastIndexOf('hello', -5)` はどちらも `0` を返します。`hello` をインデックス `0` でしか検索しないからです。
### 返値

`searchString` が最後に出現した位置です。見つからなかった場合は、 `-1` になります。

解説
--

文字列は 0 基点です。文字列の最初の文字のインデックスは `0` で、文字列の最後の文字のインデックスは文字列の長さから 1 を引いたものになります。


```js
"canal".lastIndexOf("a"); // 3 を返す
"canal".lastIndexOf("a", 2); // 1 を返す
"canal".lastIndexOf("a", 0); // -1 を返す
"canal".lastIndexOf("x"); // -1 を返す
"canal".lastIndexOf("c", -5); // 0 を返す
"canal".lastIndexOf("c", 0); // 0 を返す
"canal".lastIndexOf(""); // 5 を返す
"canal".lastIndexOf("", 2); // 2 を返す
```

### 大文字小文字の区別

`lastIndexOf()` メソッドは大文字と小文字を区別します。例えば、以下の式は `-1` を返します。


```js
"Blue Whale, Killer Whale".lastIndexOf("blue"); // -1 を返す
```

例
-

### indexOf() と lastIndexOf() の使用

以下の例は、 `indexOf()` と `lastIndexOf()` を使用して文字列 `"Brave, Brave New World"` の中の値の位置を示します。


```js
const anyString = "Brave, Brave New World";

console.log(anyString.indexOf("Brave")); // 0
console.log(anyString.lastIndexOf("Brave")); // 7
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.lastindexof |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.charAt()`
* `String.prototype.indexOf()`
* `String.prototype.split()`
* `Array.prototype.indexOf()`
* `Array.prototype.lastIndexOf()`
String.prototype.toLowerCase()
==============================

**`toLowerCase()`** メソッドは、呼び出す文字列の値を小文字に変換して返します。

試してみましょう
--------

構文
--


```js
toLowerCase()
```

### 返値

呼び出す文字列の値を小文字に変換した新しい文字列です。

解説
--

`toLowerCase()` メソッドは、小文字に変換された文字列の値を返します。`toLowerCase()` メソッドは、文字列 `str` 自身の値には影響を与えません。

例
-

### `toLowerCase()` メソッドの使用


```js
console.log("ALPHABET".toLowerCase()); // 'alphabet'
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.tolowercase |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.toLocaleLowerCase()`
* `String.prototype.toLocaleUpperCase()`
* `String.prototype.toUpperCase()`
String.prototype.toLocaleLowerCase()
====================================

**`toLocaleLowerCase()`** メソッドは、呼び出した文字列の値を、ロケールに依存した対応付けに基づいて小文字に変換して返します。

試してみましょう
--------

構文
--


```js
toLocaleLowerCase()
toLocaleLowerCase(locales)
```

### 引数

`locales` 省略可

BCP 47 言語タグを持つ文字列、またはそのような文字列の配列です。 ロケール固有の大文字小文字の対応付けに従って小文字に変換するために使用するロケールを示します。 引数 `locales` の一般的な形成と解釈については、`Intl` メインページの引数の説明 を参照してください。

引数 `locales` を使用する他のメソッドとは異なり、`toLocaleLowerCase()` はロケールの照合を許可しません。 そのため、引数 `locales` の有効性を調べた後、 `toLocaleLowerCase()` は常にリストの最初のロケール（リストが空の場合は既定値）を、そのロケールに実装で対応していない場合でも使用します。

### 返値

呼び出した文字列をロケールに依存した対応に基づいて小文字に変換したものを表す新しい文字列です。

解説
--

`toLocaleLowerCase()` メソッドは、ロケール固有の大文字小文字の対応付けに従って小文字に変換された文字列の値を返します。`toLocaleLowerCase()` はその文字列自体に影響を与えません。ほとんどの場合は `toLowerCase()` と同じ結果が得られますが、トルコ語のように大文字小文字のマッピングが Unicode 既定の大文字小文字のマッピングに従っていないロケールの場合は、異なる結果が得られる可能性があります。

例
-

### toLocaleLowerCase() の使用


```js
"ALPHABET".toLocaleLowerCase(); // 'alphabet'

"\u0130".toLocaleLowerCase("tr") === "i"; // true
"\u0130".toLocaleLowerCase("en-US") === "i"; // false

const locales = ["tr", "TR", "tr-TR", "tr-u-co-search", "tr-x-turkish"];
"\u0130".toLocaleLowerCase(locales) === "i"; // true
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.tolocalelowercase |
| ECMAScript Internationalization API Specification # sup-string.prototype.tolocalelowercase |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.toLocaleUpperCase()`
* `String.prototype.toLowerCase()`
* `String.prototype.toUpperCase()`
String.prototype.padStart()
===========================

**`padStart()`** メソッドは、結果の文字列が指定した長さになるように、現在の文字列を他の文字列で（必要に応じて繰り返して）延長します。延長は、現在の文字列の先頭から適用されます。

試してみましょう
--------

構文
--


```js
padStart(targetLength)
padStart(targetLength, padString)
```

### 引数

`targetLength`

現在の文字列の延長後に返される文字列の長さです。この値が現在の文字列の長さよりも短い場合、文字列がそのまま返されます。

`padString` 省略可

 現在の文字列を延長するための文字列です。 `padString` が `targetLength` より長い場合は、右からその長さ分が切り捨てられます。
 この引数の既定値は、Unicode の「空白」文字 (U+0020) です。


### 返値

現在の文字列の先頭に `padString` が適用された、指定された `targetLength` の長さの `String` です。

例
-

### 基本的な例


```js
"abc".padStart(10); // " abc"
"abc".padStart(10, "foo"); // "foofoofabc"
"abc".padStart(6, "123465"); // "123abc"
"abc".padStart(8, "0"); // "00000abc"
"abc".padStart(1); // "abc"
```

### 数値を固定長文字列へ変換


```js
// JavaScript version of: (unsigned)
// printf "%0\*d" width num
function leftFillNum(num, targetLength) {
  return num.toString().padStart(targetLength, "0");
}

const num = 123;
console.log(leftFillNum(num, 5)); // "00123"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.padstart |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.padStart` のポリフィル (`core-js`)
* `String.prototype.padEnd()`
String.prototype.isWellFormed()
===============================

**`isWellFormed()`** は `String` 値のメソッドで、この文字列に孤立サロゲートがあるかどうかを示す論理値を返します。

構文
--


```js
isWellFormed()
```

### 返値

この文字列に孤立サロゲートがある場合は `true`、そうでなれば `false`。

解説
--

JavaScript の文字列は UTF-16 エンコードです。UTF-16 エンコーディングには「サロゲートペア」の概念があり、UTF-16 文字、Unicode コードポイント、書記素クラスターの節で詳しく紹介されています。

`isWellFormed()` を使うと、文字列が整形式であるかどうか（つまり、孤立サロゲートを含まないかどうか）をテストすることができます。 カスタム実装と比べると、`isWellFormed()` は、エンジンが文字列の内部表現に直接アクセスできるので、より効率的です。 文字列を整形式文字列に変換する必要がある場合は、`toWellFormed()` メソッドを使ってください。 `isWellFormed()` を使うと、整形式でない文字列を整形式文字列とは異なる形で扱うことができ、例えば、エラーを発生させたり、無効としたりすることができます。

例
-

### isWellFormed() の使用


```js
const strings = [
  // 孤立高サロゲート
  "ab\uD800",
  "ab\uD800c",
  // 孤立低サロゲート
  "\uDFFFab",
  "c\uDFFFab",
  // 整形式
  "abc",
  "ab\uD83D\uDE04c",
];

for (const str of strings) {
  console.log(str.isWellFormed());
}
// Logs:
// false
// false
// false
// false
// true
// true
```

### encodeURI() のエラーを回避

`encodeURI` は渡された文字列が整形式でなかった場合にエラーが発生します。これは `isWellFormed()` を使用して、文字列を `encodeURI()` に渡す前に検査することで回避できます。


```js
const illFormed = "https://example.com/search?q=\uD800";

try {
  encodeURI(illFormed);
} catch (e) {
  console.log(e); // URIError: URI malformed
}

if (illFormed.isWellFormed()) {
  console.log(encodeURI(illFormed));
} else {
  console.warn("整形式でない文字列に遭遇しました。"); // 整形式でない文字列に遭遇しました。
}
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.iswellformed |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.isWellFormed` のポリフィル (`core-js`)
* `String.prototype.toWellFormed()`
* `String.prototype.normalize()`
String.prototype.fontcolor()
============================

**非推奨:** この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

**`fontcolor()`** メソッドは、文字列を `<font>` 要素に埋め込み (`<font color="...">str</font>`)、文字列が指定されたフォント色で表示されるようにする文字列を生成します。

**メモ:** HTML ラッパーメソッドはすべて非推奨となっており、互換性目的のみで標準化されています。`fontcolor()` の場合、`<font>` 要素は HTML5 で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は CSS プロパティを使用してください。

構文
--


```js
fontcolor(color);
```

### 引数

`color`

16 進数の RGB 値または文字列リテラルで色を表す文字列です。 CSS 色リファレンスに、色名の文字列リテラルの一覧があります。

### 返値

開始タグ `<font color="color">` （`color` の中の二重引用符は `&quot;` に置き換えられます）、`str` のテキストが来て、終了タグ `</font>` が来る文字列です。

解説
--

`fontcolor()` メソッド自体は、単純に文字列の部品を検証や正規化せずに接続するだけです。しかし、妥当な `<font>` 要素を作成するには、16 進数の RGB で表現する場合は、 `rrggbb` の書式を使用する必要があります。例えば、サーモン色は red=FA, green=80, blue=72 であるため、サーモン色の RGB 値は "`FA8072`" です。

例
-

### fontcolor() の使用

以下の例は `fontcolor()` メソッドを使用して、 HTML の `<font>` 要素を伴う文字列を生成することで文字列の色を変更しています。


```js
const worldString = "Hello, world";

console.log(`${worldString.fontcolor("red")} is red in this line`);
// '<font color="red">Hello, world</font> is red in this line'

console.log(
  `${worldString.fontcolor("FF00")} is red in hexadecimal in this line`,
);
// '<font color="FF00">Hello, world</font> is red in hexadecimal in this line'
```


`element.style` オブジェクトを使用すると、要素の `style` 属性を使用して、次のようにもっと汎用的に操作することができます。


```js
document.getElementById("yourElemId").style.color = "red";
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.fontcolor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.fontcolor` のポリフィル (`core-js`)
* `String.prototype.fontsize()`
String.prototype.trimEnd()
==========================

**`trimEnd()`** メソッドは、元の文字列を変更せずに、文字列の末尾のホワイトスペースを削除した新しい文字列を返します。`trimRight()` はこのメソッドの別名です。

試してみましょう
--------

構文
--


```js
trimEnd()

trimRight()
```

### 返値

`str` の末尾のホワイトスペースを取り除いた新しい文字列です。ホワイトスペースはホワイトスペース文字と改行文字で定義します。

`str` の末尾にホワイトスペースがなかった場合でも、新しい文字列が返されます（基本的には `str` のコピー）。

### 別名

`trim()` が標準化された後、エンジンは標準外の `trimRight` メソッドも実装しました。しかし `padEnd()` との整合を取るため、このメソッドが標準化された際、`trimEnd` という名前が選択されました。ウェブの互換性の理由から、`trimRight` も `trimEnd` の別名として残っており、全く同じ関数オブジェクトを示します。エンジンによっては次のような意味になります。


```js
String.prototype.trimRight.name === "trimEnd";
```

例
-

### trimEnd() の使用

次の例は `str` の末尾から空白を取り除きますが、先頭からは取り除きません。


```js
let str = " foo ";

console.log(str.length); // 8

str = str.trimEnd();
console.log(str.length); // 6
console.log(str); // ' foo'
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.trimend |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.trimEnd` のポリフィル (`core-js`)
* `String.prototype.trim()`
* `String.prototype.trimStart()`
String.prototype.charCodeAt()
=============================

**`charCodeAt()`** メソッドは、指定された位置にある UTF-16 コード単位を表す `0` から `65535` までの整数を返します。

`charCodeAt()` は常に UTF-16 コード単位の並びとして文字列をインデックスするので、孤立サロゲートを返すかもしれません。コードポイント値全体を取得したい場合は、 `codePointAt()` を使用してください。

試してみましょう
--------

構文
--


```js
charCodeAt(index)
```

### 引数

`index`

返す文字の 0 基点のインデックスです。整数に変換され、`undefined` は 0 に変換されます。

### 返値

`0` から `65535` までの整数を返します。これは `index` で指定された位置の UTF-16 コード単位の値を表します。`index` が `0` ～ `str.length - 1` の範囲外であった場合、`charCodeAt()` は `NaN` を返します。

解説
--

文字列の中の文字は、左から右に向けてインデックス付けされています。最初の文字の添字は `0` であり、最後の文字の添字は `str` という名前の文字列であれば `str.length - 1` です。

Unicode のコードポイントは `0` から `1114111` (`0x10FFFF`) までの範囲です。`charCodeAt()` は常に `65536` より小さい値を返しますが、これは上位のコードポイントは 16 ビットのサロゲート擬似文字のペアによって表されているからです。したがって、`65535` より大きい値を持つ完全な文字を取得するには、`charCodeAt(i)` だけでなく `charCodeAt(i + 1)` も取得するか（2 つの文字を持つ文字列を操作する場合と同じです）、または `codePointAt(i)` を使用する必要があります。Unicode に関する情報はUTF-16 文字、Unicode コードポイント、書記素クラスターを参照してください。

例
-

### charCodeAt() の使用

以下の例では、 Unicode 文字の A である `65` を返します。


```js
"ABC".charCodeAt(0); // returns 65
```


`charCodeAt()` は妥当な Unicode 文字ではない、孤立サロゲートを返す可能性があります。


```js
const str = "𠮷𠮾";
console.log(str.charAt(0)); // 55362、または d842、これは妥当な Unicode 文字ではない
console.log(str.charAt(1)); // 57271、または dfb7、これは妥当な Unicode 文字ではない
```


指定された位置の完全な Unicode コードポイントを取得するには、`String.prototype.codePointAt()` を使用してください。


```js
const str = "𠮷𠮾";
console.log(str.codePointAt(0)); // 134071
```


**メモ:** `charCodeAt()` を使用して `codePointAt()` を再実装することは避けてください。孤立サロゲートの検出とそのペアリングは複雑で、文字列の内部表現を直接使用する組み込み API の方がパフォーマンスが高いかもしれません。必要であれば、`codePointAt()` のポリフィルをインストールしてください。

以下は Unicode FAQ から引用した、UTF-16 コードユニットのペアを Unicode コードポイントに変換する可能なアルゴリズムです。


```js
// constants
const LEAD\_OFFSET = 0xd800 - (0x10000 >> 10);
const SURROGATE\_OFFSET = 0x10000 - (0xd800 << 10) - 0xdc00;

function utf16ToUnicode(lead, trail) {
  return (lead << 10) + trail + SURROGATE\_OFFSET;
}
function unicodeToUTF16(codePoint) {
  const lead = LEAD\_OFFSET + (codePoint >> 10);
  const trail = 0xdc00 + (codePoint & 0x3ff);
  return [lead, trail];
}

const str = "𠮷";
console.log(utf16ToUnicode(str.charCodeAt(0), str.charCodeAt(1))); // 134071
console.log(str.codePointAt(0)); // 134071
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.charcodeat |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.fromCharCode()`
* `String.prototype.charAt()`
* `String.fromCodePoint()`
* `String.prototype.codePointAt()`
String.prototype.startsWith()
=============================

**`startsWith()`** メソッドは文字列が引数で指定された文字列で始まるかを判定して `true` か `false` を返します。

試してみましょう
--------

構文
--


```js
startsWith(searchString)
startsWith(searchString, position)
```

### 引数

`searchString`

`str` の先頭で検索される文字の集合です。正規表現にすることはできません。正規表現ではない値はすべて文字列に変換されますので、省略したり `undefined` を渡したりすると、`startsWith()` は `"undefined"` という文字列を検索します。これはおそらく望むところではないでしょう。

`position` 省略可

`searchString` が見つかると期待される開始位置（`searchString` の先頭の文字のインデックス）です。既定値は `0` です。

### 返値

文字列が指定された文字列で始まる場合、`searchString` が空文字列の場合は **`true`**、それ以外の場合は **`false`** です。

### 例外

`TypeError`

`searchString` が正規表現であった場合。

解説
--

文字列が特定の文字列で終わるかどうかを判断できます。このメソッドでは（英文字の）大文字小文字は区別されます。

例
-

### startsWith() の使用


```js
const str = "To be, or not to be, that is the question.";

console.log(str.startsWith("To be")); // true
console.log(str.startsWith("not to be")); // false
console.log(str.startsWith("not to be", 10)); // true
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.startswith |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.startsWith` のポリフィル (`core-js`)
* `String.prototype.endsWith()`
* `String.prototype.includes()`
* `String.prototype.indexOf()`
* `String.prototype.lastIndexOf()`
String.prototype.substr()
=========================

**非推奨:** この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

**`substr()`** メソッドは、文字列の一部を、指定した位置から後方向に指定した文字数だけ返します。

**メモ:** `substr()` は ECMAScript 仕様書の主要部にはありません。付録 B: ウェブブラウザーのための追加 ECMAScript 機能 で定義されており、ブラウザー以外のランタイムでは通常オプションです。従って、コードのクロスプラットフォームの親和性を最大にするには、代わりに標準の `String.prototype.substring()` または `String.prototype.slice()` メソッドを使用するよう勧められています。これら 3 つのメソッドの比較が `String.prototype.substring()` page にあります。

試してみましょう
--------

構文
--


```js
substr(start)
substr(start, length)
```

### 引数

`start`

返却する部分文字列に含まれる最初の文字の位置です。

`length` 省略可

取り出す文字の数です。

### 返値

指定された文字列の指定された部分が入った新しい文字列です。

解説
--

文字列の `substr()` メソッドは、その文字列の `start` のインデックスから `length` 文字分を数えて抽出します。

* `start >= str.length` である場合、空文字列が返されます。
* `start < 0` である場合、文字列の末尾から数えたインデックスになります。厳密には、この場合は `max(start + str.length, 0)` で始まる部分文字列になります。
* `start` が省略されたか `undefined` であった場合、`0` として扱われます。
* `length` が省略されたか `undefined` であった場合、または`start + length >= str.length` であった場合、`substr()` は文字列の末尾まで文字を抽出します。
* `length < 0` の場合、空文字列が返されます。
* `start` と `length` のどちらでも、`NaN` は `0` として扱われます。

`substr()` の使用を避けることが推奨されますが、レガシーコードにおいて `substr()` を `slice()` または `substring()` に移行する簡単な方法はありません。例えば、`str = "01234", a = 1, l = -2` の場合、`str.substr(a, l)`, `str.slice(a, a + l)`, `str.substring(a, a + l)` はすべて異なる結果を返します。 `substr()` は空文字列を返し、`slice()` は `"123"` を返し、`substring()` は `"0"` を返します。実際のリファクタリング方法は、`a` と `l` の範囲に関する知識に依存します。

例
-

### substr() の使用


```js
const aString = "Mozilla";

console.log(aString.substr(0, 1)); // 'M'
console.log(aString.substr(1, 0)); // ''
console.log(aString.substr(-1, 1)); // 'a'
console.log(aString.substr(1, -1)); // ''
console.log(aString.substr(-3)); // 'lla'
console.log(aString.substr(1)); // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2)); // ''
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.substr |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.substr` のポリフィル (`core-js`)
* `String.prototype.slice()`
* `String.prototype.substring()`
String.prototype[@@iterator]()
==============================

**`[@@iterator]()`** は `String` 値のメソッドで、反復可能プロトコルを実装しており、スプレッド構文や`for...of`ループ
 文字列値のコードポイントを走査し、それぞれのコードポイントを文字列値として返すイテレーターオブジェクトを返します。

試してみましょう
--------

構文
--


```js
string[Symbol.iterator]()
```

### 返値

新しい反復可能なイテレーターオブジェクトで、この文字列の各 Unicode コードポイントを、独立した文字列として生成します。

解説
--

文字列は Unicode コードポイントで反復処理されます。つまり、書記素クラスターは分割されますが、サロゲートペアは保持されます。


```js
// "Backhand Index Pointing Right: Dark Skin Tone"
[..."👉🏿"]; // ['👉', '🏿']
// 基本的な "Backhand Index Pointing Right" の絵文字と
// "Dark skin tone" の絵文字に分割

// "Family: Man, Boy"
[..."👨‍👦"]; // [ '👨', '‍', '👦' ]
// "Man" と "Boy" の絵文字に分割され、 ZWJ で結合されます。
```

例
-

### for...of ループを用いた反復処理

このメソッドを直接呼び出す必要はほとんどないことに注意してください。`iterator` メソッドが存在することで、文字列は反復可能になり、`for...of` ループのような反復処理構文は自動的にこのメソッドを呼び出して、ループするイテレーターを取得します。


```js
const str = "A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A";

for (const v of str) {
  console.log(v);
}
// "A"
// "\uD835\uDC68"
// "B"
// "\uD835\uDC69"
// "C"
// "\uD835\uDC6A"
```

### イテレーターを手動で手繰る

反復処理を最大限に制御するために、返すイテレーターオブジェクトの `next()` メソッドを手動で呼び出すこともできます。


```js
const str = "A\uD835\uDC68";

const strIter = str[Symbol.iterator]();

console.log(strIter.next().value); // "A"
console.log(strIter.next().value); // "\uD835\uDC68"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype-@@iterator |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype[@@iterator]` のポリフィル (`core-js`)
* 反復処理プロトコル
String.prototype.concat()
=========================

**`concat()`** メソッドは、文字列引数を呼び出し文字列に連結して、新しい文字列を返します。

試してみましょう
--------

構文
--


```js
concat(str1)
concat(str1, str2)
concat(str1, str2, /\* …, \*/ strN)
```

### 引数

`strN`

`str` に連結する 1 つ以上の文字列です。

### 返値

提供された文字列を結合したテキストの入った新しい文字列です。

解説
--

`concat()` 関数は、文字列引数を呼び出し文字列に連結し、新しい文字列を返します。元の文字列または返された文字列を変更しても、他の文字列には影響しません。

引数が文字列型でない場合は、連結前に文字列値に変換されます。

`concat()` メソッドは加算/文字列結合演算子 (`+`, `+=`) にとても似ていますが、`concat()` は引数を直接文字列に変換するのに対し、加算演算子はオペランドをまずプリミティブに変換します。詳しくは、 `+` 演算子のリファレンスページを参照してください。

例
-

### concat() の使用

複数の文字列を連結してコンソールに表示する例を以下に示します。


```js
const hello = "こんにちは、";
console.log(hello.concat("鈴木さん", "。良い日を。"));
// Hello, Kevin. Have a nice day.

const greetList = ["こんにちは", " ", "佐藤さん", "!"];
"".concat(...greetList); // "こんにちは 佐藤さん!"

"".concat({}); // "[object Object]"
"".concat([]); // ""
"".concat(null); // "null"
"".concat(true); // "true"
"".concat(4, 5); // "45"
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.concat |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Array.prototype.concat()`
* 加算演算子
String.prototype.toLocaleUpperCase()
====================================

**`toLocaleUpperCase()`** メソッドは、呼び出した文字列の値を、ロケールに依存した対応付けに基づいて大文字に変換して返します。

試してみましょう
--------

構文
--


```js
toLocaleUpperCase()
toLocaleUpperCase(locales)
```

### 引数

`locale` 省略可

BCP 47 言語タグを持つ文字列、またはそのような文字列の配列です。 ロケール固有の大文字小文字の対応付けに従って大文字に変換するために使用するロケールを示します。 引数 `locales` の一般的な形成と解釈については、`Intl` メインページの引数の説明 を参照してください。

引数 `locales` を使用する他のメソッドとは異なり、`toLocaleLowerCase()` はロケールの照合を許可しません。 そのため、引数 `locales` の有効性を調べた後、 `toLocaleLowerCase()` は常にリストの最初のロケール（リストが空の場合は既定値）を、そのロケールに実装で対応していない場合でも使用します。

### 返値

呼び出した文字列をロケールに依存した対応に基づいて大文字に変換したものを表す新しい文字列です。

解説
--

`toLocaleUpperCase()` メソッドは、ロケール固有の大文字小文字の対応付けに従って大文字に変換された文字列の値を返します。 `toLocaleUpperCase()` はその文字列自体に影響を与えません。ほとんどの場合は `toUpperCase()` と同じ結果が得られますが、トルコ語のように大文字小文字のマッピングが Unicode 既定の大文字小文字のマッピングに従っていないロケールの場合は、異なる結果が得られる可能性があります。

 また、変換は必ずしも文字の 1:1 の対応付けであるとは限らず、一部の文字は大文字に変換されたときに 2 文字 (それ以上の場合も) になる可能性があることに注意してください。そのため，結果の文字列の長さは入力の長さと異なる場合があります。これは変換が安定していないことも意味します。すなわち、次の式は `false` を返す可能性があります。
 `x.toLocaleLowerCase() === x.toLocaleUpperCase().toLocaleLowerCase()`

例
-

### toLocaleUpperCase() の使用


```js
"alphabet".toLocaleUpperCase(); // 'ALPHABET'

"Gesäß".toLocaleUpperCase(); // 'GESÄSS'

"i\u0307".toLocaleUpperCase("lt-LT"); // 'I'

const locales = ["lt", "LT", "lt-LT", "lt-u-co-phonebk", "lt-x-lietuva"];
"i\u0307".toLocaleUpperCase(locales); // 'I'
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.tolocaleuppercase |
| ECMAScript Internationalization API Specification # sup-string.prototype.tolocaleuppercase |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.toLocaleLowerCase()`
* `String.prototype.toLowerCase()`
* `String.prototype.toUpperCase()`
String.prototype.trim()
=======================

**`trim()`** メソッドは、文字列の両端からホワイトスペースを取り除き、元の文字列を変更せずに新しい文字列を返す。

一方の端からのみホワイトスペースを取り除いた新しい文字列を返したい場合は、`trimStart()` または `trimEnd()` を使用してください。

試してみましょう
--------

構文
--


```js
trim()
```

### 返値

`str` の先頭と末尾のホワイトスペースを取り除いた新しい文字列を表します。 ホワイトスペースはホワイトスペース文字と改行文字で定義します。

`str` の先頭にも末尾にもホワイトスペースがなかった場合でも、新しい文字列が返されます（基本的には `str` のコピー）。

例
-

### trim() の使用

次の例は、`str` の両端からホワイトペースを取り除きます。


```js
const str = " foo ";
console.log(str.trim()); // 'foo'
```

仕様書
---

| Specification |
| --- |
| ECMAScript Language Specification # sec-string.prototype.trim |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `String.prototype.trimStart()`
* `String.prototype.trimEnd()`