diff --git a/files/ja/web/javascript/reference/global_objects/string/charat/index.md b/files/ja/web/javascript/reference/global_objects/string/charat/index.md index 05ba1bf3a96ed0..df26bcc41a5ba8 100644 --- a/files/ja/web/javascript/reference/global_objects/string/charat/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/charat/index.md @@ -2,7 +2,7 @@ title: String.prototype.charAt() slug: Web/JavaScript/Reference/Global_Objects/String/charAt l10n: - sourceCommit: 6d606174faaedaa5dee7b7ebd87602cd51e5dd7e + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} @@ -79,7 +79,7 @@ console.log(str.charAt(0)); // "\ud842"、これは妥当な Unicode 文字で console.log(str.charAt(1)); // "\udfb7"、これは妥当な Unicode 文字ではない ``` -指定された位置の完全な Unicode コードポイントを取得するには、{{jsxref("String.prototype.codePointAt()")}} や[スプレッド構文](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator)のように、Unicode コードポイントで分割して Unicode コードポイントの配列にするインデックスメソッドを使用してください +指定された位置の完全な Unicode コードポイントを取得するには、{{jsxref("String.prototype.codePointAt()")}} や[スプレッド構文](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator)のように、Unicode コードポイントで分割して Unicode コードポイントの配列にするインデックスメソッドを使用してください ```js const str = "𠮷𠮾"; @@ -105,4 +105,4 @@ console.log([...str][0]); // "𠮷" - {{jsxref("String.prototype.codePointAt()")}} - {{jsxref("String.prototype.split()")}} - {{jsxref("String.fromCodePoint()")}} -- [JavaScript has a Unicode problem – Mathias Bynens](https://mathiasbynens.be/notes/javascript-unicode) +- [JavaScript has a Unicode problem](https://mathiasbynens.be/notes/javascript-unicode) (Mathias Bynens, 2013) diff --git a/files/ja/web/javascript/reference/global_objects/string/index.md b/files/ja/web/javascript/reference/global_objects/string/index.md index 02a7a922388d71..466772082cf81e 100644 --- a/files/ja/web/javascript/reference/global_objects/string/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/index.md @@ -2,7 +2,7 @@ title: String slug: Web/JavaScript/Reference/Global_Objects/String l10n: - sourceCommit: 270351317fdaa57ba9123a19aa281e9e40bb0baa + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} @@ -11,7 +11,7 @@ l10n: ## 解説 -文字列は、テキスト形式で表現可能なデータを保持するのに便利です。最もよく使われる操作として、文字列の長さをチェックする {{jsxref("String/length", "length")}} プロパティ、 [文字列に対する + および += 演算子](/ja/docs/Web/JavaScript/Guide/Expressions_and_operators#文字列演算子)を用いた文字列の連結、文字列の中の部分文字列の存在や位置をチェックする {{jsxref("String.prototype.indexOf()", "indexOf()")}} メソッド、部分文字列を取り出す {{jsxref("String.prototype.substring()", "substring()")}} メソッドが挙げられます。 +文字列は、テキスト形式で表現可能なデータを保持するのに便利です。最もよく使われる操作として、文字列の長さをチェックする {{jsxref("String/length", "length")}} プロパティ、 [文字列に対する `+` および `+=` 演算子](/ja/docs/Web/JavaScript/Guide/Expressions_and_operators#文字列演算子)を用いた文字列の連結、文字列の中の部分文字列の存在や位置をチェックする {{jsxref("String/indexOf", "indexOf()")}} メソッド、部分文字列を取り出す {{jsxref("String/substring", "substring()")}} メソッドが挙げられます。 ### 文字列の生成 @@ -34,7 +34,7 @@ const string4 = new String("文字列オブジェクト"); ### 文字へのアクセス -文字列内の個々の文字へのアクセス方法には、2 通りの方法があります。そのひとつは {{jsxref("String.prototype.charAt()", "charAt()")}} メソッドです。 +文字列内の個々の文字へのアクセス方法には、2 通りの方法があります。そのひとつは {{jsxref("String/charAt", "charAt()")}} メソッドです。 ```js "ねこ".charAt(1); // "こ" が返される @@ -99,7 +99,7 @@ areEqual("ı", "I", "tr"); // true ### 文字列プリミティブと String オブジェクト -JavaScript では、 `String` オブジェクトと{{Glossary("Primitive", "プリミティブ文字列")}}は区別されることに注意してください。({{jsxref("Boolean")}} や {{jsxref("Global_Objects/Number", "Number")}} にも同じことが言えます。) +JavaScript では、 `String` オブジェクトと{{Glossary("Primitive", "プリミティブ文字列")}}は区別されることに注意してください。({{jsxref("Boolean")}} や {{jsxref("Number", "Number")}} にも同じことが言えます。) 文字列リテラル(二重引用符または単一引用符で示されます)、および `String` 関数をコンストラクター以外の場面で(すなわち {{jsxref("Operators/new", "new")}} キーワードを使わずに)呼び出した場合はプリミティブの文字列になります。 文字列プリミティブに対してメソッドを呼び出したり、プロパティを参照したりするコンテキストでは、JavaScript は自動的に文字列プリミティブをラップし、ラッパーオブジェクトに対してメソッドを呼び出したり、プロパティを参照したりします。 @@ -129,7 +129,7 @@ console.log(eval(s2)); // 文字列の "2 + 2" を返す こういった理由から、プリミティブの文字列を期待して実装されたコードは `String` オブジェクトでうまく動作しないことがあります。しかし、一般的にはこれらの違いを考慮しなければならないことはあまりありません。 -なお、`String` オブジェクトは {{jsxref("String.prototype.valueOf()", "valueOf()")}} メソッドを用いることで、プリミティブの文字列に変換することができます。 +なお、`String` オブジェクトは {{jsxref("String/valueOf", "valueOf()")}} メソッドを用いることで、プリミティブの文字列に変換することができます。 ```js console.log(eval(s2.valueOf())); // 数値の 4 を返す @@ -146,7 +146,7 @@ console.log(eval(s2.valueOf())); // 数値の 4 を返す - 数値は [`toString(10)`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) と同じアルゴリズムで変換されます。 - [長整数](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt)は [`toString(10)`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toString) と同じアルゴリズムで変換されます。 - [シンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol)は {{jsxref("TypeError")}} が発生します。 -- オブジェクトは最初に[プリミティブに変換](/ja/docs/Web/JavaScript/Data_structures#primitive_coercion)され、これは [`[@@toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) を(`"string"` をヒントとして)呼び出すことで行われ、次に `toString()`、そして `valueOf()` メソッドがこの順序で呼び出されます。結果のプリミティブはそれから文字列に変換されます。 +- オブジェクトは最初に[プリミティブに変換](/ja/docs/Web/JavaScript/Data_structures#プリミティブ変換)され、これは [`[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) を(`"string"` をヒントとして)呼び出すことで行われ、次に `toString()`、そして `valueOf()` メソッドがこの順序で呼び出されます。結果のプリミティブはそれから文字列に変換されます。 JavaScript でほぼ同じ効果を得る方法はいくつかあります。 @@ -160,18 +160,18 @@ JavaScript でほぼ同じ効果を得る方法はいくつかあります。 文字列は基本的に [UTF-16 コード単位](https://ja.wikipedia.org/wiki/UTF-16)の並びとして表します。UTF-16 エンコーダーでは、すべてのコード単位は正確に 16 ビット長です。つまり、単一の UTF-16 コード単位として表現可能な文字は、最大で 216 個、つまり 65536 通りあります。この文字集合は[基本多言語面 (BMP)](https://ja.wikipedia.org/wiki/基本多言語面) と呼ばれ、ラテン語、ギリシャ語、キリル文字のような最も一般的な文字や多くの東アジアの文字を含みます。各コード単位は `u` の文字列の後にちょうど 4 つの 16 進数を続けて書くことができます。 -しかし、Unicode の文字集合全体は 65536 よりはるかにずっと大きいのです。追加の文字は UTF-16 でサロゲートペアとして格納されます。これは単一の文字を表す 16 ビットのコード単位のペアです。曖昧さを避けるために、ペアの 2 つの部分は `0xD800` と `0xDFFF` の間でなければならず、これらのコード単位は単一のコード単位の文字をエンコードするためには使用しません。(より正確には、高サロゲートは `0xD800` から `0xDBFF` までの値があり、低サロゲートは `0xDC00` から `0xDFFF` までの値があります)。各 Unicode 文字は、 1 つないし 2 つの UTF-16 コード単位から成っており、Unicode コードポイントとも呼ばれます。各 Unicode コードポイントは文字列の中で `\u{xxxxxx}` と書くことができ、ここで `xxxxxx` は 1-6 桁の 16 進数を表します。 +しかし、Unicode の文字集合全体は 65536 よりはるかにずっと大きいのです。追加の文字は UTF-16 でサロゲートペアとして格納されます。これは単一の文字を表す 16 ビットのコード単位のペアです。曖昧さを避けるために、ペアの 2 つの部分は `0xD800` と `0xDFFF` の間でなければならず、これらのコード単位は単一のコード単位の文字をエンコードするためには使用しません。(より正確に言えば、上位サロゲート(上位サロゲートコード単位とも呼ばれる)は、`0xD800`から`0xDBFF`(両端値を含む)までの値を持ち、下位サロゲート(下位サロゲートコード単位とも呼ばれる)は、`0xDC00` から `0xDFFF`(両端値を含む)までの値を持ちます。各 Unicode コードポイントは文字列の中で `\u{xxxxxx}` と書くことができ、ここで `xxxxxx` は 1-6 桁の 16 進数を表します。 「孤立サロゲート」とは、下記の記述のいずれかを満たす 16 ビットのコード単位です。 -- `0xD800` から `0xDBFF` までの範囲(つまり高サロゲート)にあるものの、文字列の最後のコード単位であるか、次のコード単位が低サロゲートではないもの。 -- `0xDC00` から `0xDFFF` までの範囲(つまり低サロゲート)にあるものの、文字列の最初のコード単位であるか、前のコード単位が高サロゲートではないもの。 +- `0xD800` から `0xDBFF` までの範囲(つまり上位サロゲート)にあるものの、文字列の最後のコード単位であるか、次のコード単位が下位サロゲートではないもの。 +- `0xDC00` から `0xDFFF` までの範囲(つまり下位サロゲート)にあるものの、文字列の最初のコード単位であるか、前のコード単位が上位サロゲートではないもの。 孤立サロゲートは Unicode 文字を表しません。すべて UTF-16 コード単位に基づいて動作するため、ほとんどの JavaScript 組み込みメソッドは正しく扱いますが、他のシステムとやりとりするとき、孤立サロゲートはしばしば有効な値ではありません。例えば、[`encodeURI()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURI) は孤立サロゲートがあると {{jsxref("URIError")}} が発生します。これは URI エンコーディングが UTF-8 エンコーディングを使用しており、孤立サロゲートに対するエンコーディングを持たないためです。孤立サロゲートを格納しない文字列は _well-formed_ 文字列と呼ばれ、UTF-16 を扱わない関数(`encodeURI()` や {{domxref("TextEncoder")}} など)で使用しても安全です。{{jsxref("String/isWellFormed", "isWellFormed()")}} メソッドで文字列が整形されているか調べたり、{{jsxref("String/toWellFormed", "toWellFormed()")}} メソッドで孤立サロゲートをサニタイズすることができます。 Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚単位として扱われるべき Unicode 文字並びがあります。最も一般的なケースは絵文字で、様々なバリエーションがある絵文字の多くは、実際には複数の絵文字で形成されており、たいていの場合、\ (`U+200D`) 文字で結合されています。 -どのレベルの文字を反復処理するのかに注意する必要があります。例えば、[`split("")`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split) は UTF-16 コード単位で分割し、サロゲートペアを区切ります。文字列インデックスも各 UTF-16 コード単位のインデックスを参照します。他にも、[`@@iterator()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator) はUnicode コードポイントで反復処理します。書記素クラスターを反復処理するには独自のコードが必要です。 +どのレベルの文字を反復処理するのかに注意する必要があります。例えば、[`split("")`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split) は UTF-16 コード単位で分割し、サロゲートペアを区切ります。文字列インデックスも各 UTF-16 コード単位のインデックスを参照します。他にも、[`[Symbol.iterator]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) はUnicode コードポイントで反復処理します。書記素クラスターを反復処理するには独自のコードが必要です。 ```js "😄".split(""); // ['\ud83d', '\ude04']; 孤立サロゲートを 2 つに分割 @@ -194,7 +194,7 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 ## コンストラクター - {{jsxref("String/String", "String()")}} - - : 新しい `String` オブジェクトを生成するために使用します。コンストラクターではなく関数として呼び出されたときは型変換を行うので、普通はより有用です。 + - : `String` オブジェクトを生成します。関数として呼び出された場合、`String` 型のプリミティブ値を返します。 ## 静的メソッド @@ -221,7 +221,7 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 - {{jsxref("String.prototype.at()")}} - : 指定した `index` にある文字(UTF-16 コード単位)を返します。負の整数を受け入れ、その場合は文字列の最後の文字から遡ります。 -- {{jsxref("String.prototype.charAt()")}} +- {{jsxref("String/charAt")}} - : `index` で指定された位置の文字(UTF-16 コード単位 1 つ)を返します。 - {{jsxref("String.prototype.charCodeAt()")}} - : `index` で指定された位置の文字の UTF-16 コード単位の値を示す数を返します。 @@ -234,11 +234,11 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 - {{jsxref("String.prototype.includes()")}} - : 呼び出した文字列に `searchString` が含まれているかを返します。 - {{jsxref("String.prototype.indexOf()")}} - - : 呼び出す {{jsxref("String")}} オブジェクト内で、`searchValue` が最初に現れる位置を返します。見つからなかった場合は `-1` を返します。 + - : この文字列内で、`searchValue` が最初に現れる位置を返します。見つからなかった場合は `-1` を返します。 - {{jsxref("String.prototype.isWellFormed()")}} - - : 文字列に[孤立サロゲート](#utf-16_characters_unicode_code_points_and_grapheme_clusters)が含まれているかどうかを示す論理値を返します。 + - : 文字列に[孤立サロゲート](#utf-16_文字、unicode_コードポイント、書記素クラスター)が含まれているかどうかを示す論理値を返します。 - {{jsxref("String.prototype.lastIndexOf()")}} - - : 呼び出した {{jsxref("String")}} オブジェクト内で、`searchValue` が最後に現れる位置を返します。見つからない場合は `-1` を返します。 + - : この文字列内で、`searchValue` が最後に現れる位置を返します。見つからない場合は `-1` を返します。 - {{jsxref("String.prototype.localeCompare()")}} - : 参照文字列 `compareString` が、並べ替え順において、与えられた文字列の前になるか後になるか、あるいは、同じかどうかを示す数値を返します。 - {{jsxref("String.prototype.match()")}} @@ -265,21 +265,21 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 - : 呼び出した文字列を、部分文字列 `sep` が現れるところで分割し、文字列の配列を生成して返します。 - {{jsxref("String.prototype.startsWith()")}} - : 呼び出した文字列が文字列 `searchString` で開始されているかを判断します。 -- {{jsxref("String.prototype.substr()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.substr()")}} {{deprecated_inline}} - : 指定されたインデックスから、指定された文字数だけ文字列の一部を返します。 -- {{jsxref("String.prototype.substring()")}} +- {{jsxref("String/substring")}} - : 呼び出した文字列の指定された位置以降(または区間)にある文字が入った新しい文字列を返します。 - {{jsxref("String.prototype.toLocaleLowerCase()")}} - : 文字列内の文字が、現在のロケールに沿って小文字に変換されます。 - ほとんどの言語では、これは {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} と同じものを返します。 + ほとんどの言語では、これは {{jsxref("String/toLowerCase", "toLowerCase()")}} と同じものを返します。 - {{jsxref("String.prototype.toLocaleUpperCase()")}} - : 文字列内の文字が、現在のロケールに沿って大文字に変換されます。 - ほとんどの言語では、これは {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}} と同じものを返します。 + ほとんどの言語では、これは {{jsxref("String/toUpperCase", "toUpperCase()")}} と同じものを返します。 - {{jsxref("String.prototype.toLowerCase()")}} - : 小文字に変換された文字列の値を呼び出して返します。 @@ -295,9 +295,9 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 - : 文字列の末尾にあるホワイトスペースを削除します。 - {{jsxref("String.prototype.trimStart()")}} - : 文字列の先頭にあるホワイトスペースを削除します。 -- {{jsxref("String.prototype.valueOf()")}} +- {{jsxref("String/valueOf")}} - : 指定されたオブジェクトのプリミティブ値を返します。{{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。 -- [`String.prototype[@@iterator]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator) +- [`String.prototype[Symbol.iterator]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) - : 文字列値のコードポイントを反復処理し、文字列値として各コードポイントを返す、新しいイテレーターオブジェクトを返します。 ### HTML ラッパーメソッド @@ -307,31 +307,31 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 > > これらはとても古い HTML 標準に基づいており、現在利用できる HTML タグや属性のサブセットしか提供していないため、使用するのには限界があります。多くが今日では非推奨または標準外のマークアップを生成します。さらに、単純な文字列の連結を検証やサニタイズなしに行うため、[`innerHTML`](/ja/docs/Web/API/Element/innerHTML) を使用して直接挿入するとセキュリティ上の脅威となる可能性があります。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model)、例えば [`document.createElement()`](/ja/docs/Web/API/Document/createElement) など使用してください。 -- {{jsxref("String.prototype.anchor()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.anchor()")}} {{deprecated_inline}} - : [``](/ja/docs/Web/HTML/Element/a#name)(ハイパーテキストのターゲット) -- {{jsxref("String.prototype.big()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.big()")}} {{deprecated_inline}} - : {{HTMLElement("big")}} -- {{jsxref("String.prototype.blink()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.blink()")}} {{deprecated_inline}} - : `` -- {{jsxref("String.prototype.bold()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.bold()")}} {{deprecated_inline}} - : {{HTMLElement("b")}} -- {{jsxref("String.prototype.fixed()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.fixed()")}} {{deprecated_inline}} - : {{HTMLElement("tt")}} -- {{jsxref("String.prototype.fontcolor()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.fontcolor()")}} {{deprecated_inline}} - : [``](/ja/docs/Web/HTML/Element/font#color) -- {{jsxref("String.prototype.fontsize()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.fontsize()")}} {{deprecated_inline}} - : [``](/ja/docs/Web/HTML/Element/font#size) -- {{jsxref("String.prototype.italics()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.italics()")}} {{deprecated_inline}} - : {{HTMLElement("i")}} -- {{jsxref("String.prototype.link()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.link()")}} {{deprecated_inline}} - : [``](/ja/docs/Web/HTML/Element/a#href)(URL へのリンク) -- {{jsxref("String.prototype.small()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.small()")}} {{deprecated_inline}} - : {{HTMLElement("small")}} -- {{jsxref("String.prototype.strike()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.strike()")}} {{deprecated_inline}} - : {{HTMLElement("strike")}} -- {{jsxref("String.prototype.sub()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.sub()")}} {{deprecated_inline}} - : {{HTMLElement("sub")}} -- {{jsxref("String.prototype.sup()")}} {{Deprecated_Inline}} +- {{jsxref("String.prototype.sup()")}} {{deprecated_inline}} - : {{HTMLElement("sup")}} これらのメソッドは文字列そのものが HTML タグを含むかどうかを調べないので、無効な HTML を作成する可能性があることに注意してください。 @@ -350,15 +350,17 @@ Unicode 文字の上に、書記素クラスターと呼ばれる 1 つの視覚 ### 文字列変換 -`String` を使用すると、 {{jsxref("String.prototype.toString()", "toString()")}} よりも信頼性の高い代替手段となり、[`null`](/ja/docs/Web/JavaScript/Reference/Operators/null) および {{jsxref("undefined")}} に対して使用することもできます。 +`String()` 関数は、値の {{jsxref("String.prototype.toString()", "toString()")}} メソッドを呼び出すよりも、値を文字列に変換する信頼性の高い方法です。前者は [`null`](/ja/docs/Web/JavaScript/Reference/Operators/null) や {{jsxref("undefined")}} に対して使用しても動作するからです。例を示します。 ```js +// null や undefined のプロパティにアクセスすることはできない + const nullVar = null; -nullVar.toString(); // TypeError: nullVar is null +nullVar.toString(); // TypeError: Cannot read properties of null String(nullVar); // "null" const undefinedVar = undefined; -undefinedVar.toString(); // TypeError: undefinedVar is undefined +undefinedVar.toString(); // TypeError: Cannot read properties of undefined String(undefinedVar); // "undefined" ``` @@ -372,5 +374,5 @@ String(undefinedVar); // "undefined" ## 関連情報 -- [JavaScript ガイドのテキスト処理](/ja/docs/Web/JavaScript/Guide/Text_formatting) +- [テキスト処理](/ja/docs/Web/JavaScript/Guide/Text_formatting)ガイド - {{jsxref("RegExp")}} diff --git a/files/ja/web/javascript/reference/global_objects/string/match/index.md b/files/ja/web/javascript/reference/global_objects/string/match/index.md index 21b8f38a43bf7f..f6cdca307312ca 100644 --- a/files/ja/web/javascript/reference/global_objects/string/match/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/match/index.md @@ -2,12 +2,12 @@ title: String.prototype.match() slug: Web/JavaScript/Reference/Global_Objects/String/match l10n: - sourceCommit: 8a6bfb2736b78904e81c94b82f86278031e65c80 + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} -**`match()`** メソッドは、[正規表現](/ja/docs/Web/JavaScript/Guide/Regular_expressions)に対する文字列の照合結果を受け取ります。 +**`match()`** は {{jsxref("String")}} 値のメソッドで、この文字列の[正規表現](/ja/docs/Web/JavaScript/Guide/Regular_expressions)に対する照合結果を受け取ります。 {{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}} @@ -36,13 +36,13 @@ match(regexp) ## 解説 -`String.prototype.match` 自体の実装はとてもシンプルです。引数の文字列を最初の引数として `Symbol.match` メソッドを呼び出すだけです。実際の実装は [`RegExp.prototype[@@match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@match) から来ています。 +`String.prototype.match` 自体の実装はとてもシンプルです。引数の文字列を最初の引数として `Symbol.match` メソッドを呼び出すだけです。実際の実装は [`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) から来ています。 - ある文字列が正規表現 {{jsxref("RegExp")}} に一致するかどうかを知る必要がある場合は、 {{jsxref("RegExp.prototype.test()")}} を使用してください。 - 一番最初に一致したものだけが欲しい場合は、代わりに {{jsxref("RegExp.prototype.exec()")}} を使ったほうが良いかもしれません。 - キャプチャグループを取得する場合でグローバルフラグを設定する場合は、 {{jsxref("RegExp.prototype.exec()")}} を使用してください。 -正規表現が渡されたときの `match()` の意味についての詳しい情報は、[`RegExp.prototype[@@match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@match) を参照してください。 +正規表現が渡されたときの `match()` の意味についての詳しい情報は、[`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) を参照してください。 ## 例 @@ -105,7 +105,7 @@ const str = "Nothing will come of nothing."; str.match(); // returns [""] ``` -### RegExp ではないオブジェクトを引数にする +### match() を `[Symbol.match]()` を実装している RegExp でないオブジェクトで使用 オブジェクトに `Symbol.match` メソッドがある場合、カスタムマッチャーとして使用することができます。 `Symbol.match` の返値が `match()` の返値になります。 diff --git a/files/ja/web/javascript/reference/global_objects/string/replace/index.md b/files/ja/web/javascript/reference/global_objects/string/replace/index.md index b916c48b3a9130..89891195864f75 100644 --- a/files/ja/web/javascript/reference/global_objects/string/replace/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/replace/index.md @@ -2,12 +2,12 @@ title: String.prototype.replace() slug: Web/JavaScript/Reference/Global_Objects/String/replace l10n: - sourceCommit: d85a7ba8cca98c2f6cf67a0c44f0ffd467532f20 + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} -**`replace()`** メソッドは、`pattern` に一致する文字列の一部またはすべてを `replacement` で置き換えた新しい文字列を返します。`pattern` には文字列または正規表現 ({{jsxref("RegExp")}}) を指定することができ、 `replacement` には文字列または一致するごとに呼び出される関数を指定することができます。`pattern` が文字列の場合、最初に一致した箇所のみを置き換えます。元の文字列は変更されません。 +**`replace()`** は {{jsxref("String")}} 値のメソッドで、`pattern` に一致する文字列の一部またはすべてを `replacement` で置き換えた新しい文字列を返します。`pattern` には文字列または正規表現 ({{jsxref("RegExp")}}) を指定することができ、 `replacement` には文字列または一致するごとに呼び出される関数を指定することができます。`pattern` が文字列の場合、最初に一致した箇所のみを置き換えます。元の文字列は変更されません。 {{EmbedInteractiveExample("pages/js/string-replace.html")}} @@ -36,7 +36,7 @@ replace(pattern, replacement) 文字列パターンは一度だけ置換されます。 グローバルな検索と置換を行うには、正規表現を `g` フラグで使用するか、代わりに [`replaceAll()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll) を使用してください。 -`pattern` が [`Symbol.replace`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) メソッドを持つオブジェクト(`RegExp` オブジェクトを含む)である場合、そのメソッドはターゲット文字列と `replacement` を引数として呼び出されます。その返値は `replace()` の返値となります。この場合、`replace()` の動作は完全に `@@replace` メソッドによってエンコードされます。例えば、以下の説明で「グループをキャプチャする」と書かれているものは、実際には [`RegExp.prototype[@@replace]`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace) によって提供される機能です。 +`pattern` が [`Symbol.replace`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) メソッドを持つオブジェクト(`RegExp` オブジェクトを含む)である場合、そのメソッドはターゲット文字列と `replacement` を引数として呼び出されます。その返値は `replace()` の返値となります。この場合、`replace()` の動作は完全に `[Symbol.replace]()` メソッドによってエンコードされます。例えば、以下の説明で「グループをキャプチャする」と書かれているものは、実際には [`RegExp.prototype[Symbol.replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) によって提供される機能です。 `pattern` が空文字列の場合、文字列の始めには置換後の文字列が置かれます。 @@ -44,7 +44,7 @@ replace(pattern, replacement) "xxx".replace("", "_"); // "_xxx" ``` -`g` フラグを持つ正規表現は、 `replace()` が複数回置換する唯一のケースです。正規表現プロパティ(特に [sticky](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) フラグ)と `replace()` の相互作用については、[`RegExp.prototype[@@replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace) を参照してください。 +`g` フラグを持つ正規表現は、 `replace()` が複数回置換する唯一のケースです。正規表現プロパティ(特に [sticky](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) フラグ)と `replace()` の相互作用については、[`RegExp.prototype[Symbol.replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) を参照してください。 ### 置換文字列としての文字列の指定 @@ -91,7 +91,7 @@ function replacer(match, p1, p2, /* …, */ pN, offset, string, groups) { - `match` - : 一致した部分文字列(上記の `$&` に対応)です。 -- `p1, p2, …, pN` +- `p1`, `p2`, …, `pN` - : キャプチャグループ(名前付きキャプチャグループを含む)で見つかった `n` 番目の文字列で、`replace()` の第一引数が {{jsxref("RegExp")}} オブジェクトだった場合に提供されるものです。(上記の `$1`, `$2`, などに対応します。)例えば `pattern` が `/(\a+)(\b+)/` であった場合、`p1` は `\a+` に対する一致、`p2` は `\b+` に対する一致となります。そのグループが論理和の一部である場合(`"abc".replace(/(a)|(b)/, replacer)` など)、一致しない選択肢は `undefined` なります。 - `offset` - : 一致した部分文字列の、分析中の文字列全体の中でのオフセットです。例えば、文字列全体が `'abcd'` で、一致した部分文字列が `'bc'` ならば、この引数は 1 となります。 @@ -130,7 +130,7 @@ console.log(newstr); // Twas the night before Christmas... これは `'Twas the night before Christmas...'` と出力します。 > [!NOTE] -> 正規表現についてのその他の例は[このガイド](/ja/docs/Web/JavaScript/Guide/Regular_expressions)を参照してください。 +> 正規表現についてのその他の例は、[正規表現ガイド](/ja/docs/Web/JavaScript/Guide/Regular_expressions)を参照してください。 ### 大文字小文字を区別しないフラグとグローバルフラグの使用 @@ -175,7 +175,7 @@ function styleHyphenFormat(propertyName) { `styleHyphenFormat('borderTop')`を入力すると `'border-top'` を返します。 -最終的な置換が行われる前に、一致の*結果*をさらに変換したいので、関数を使用する必要があります。これにより、[`toLowerCase()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) メソッドの前に一致の評価が行われます。関数を使わず一致を使ってこれを行おうとした場合、 {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} は何の効果もないでしょう。 +最終的な置換が行われる前に、一致の*結果*をさらに変換したいので、関数を使用する必要があります。これにより、[`toLowerCase()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) メソッドの前に一致の評価が行われます。関数を使わず一致を使ってこれを行おうとした場合、 {{jsxref("String/toLowerCase", "toLowerCase()")}} は何の効果もないでしょう。 ```js example-bad // 動作しない @@ -248,9 +248,9 @@ console.log("abcd".replace(/(?bc)/, addOffset)); // "abc (1) d" ## 関連情報 - [`String.prototype.replace` のポリフィル (`core-js`) (`Symbol.replace` への対応など、現代の修正や実装に対応したもの)](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) -- {{jsxref("String.prototype.replaceAll", "String.prototype.replaceAll()")}} -- {{jsxref("String.prototype.match", "String.prototype.match()")}} -- {{jsxref("RegExp.prototype.exec", "RegExp.prototype.exec()")}} -- {{jsxref("RegExp.prototype.test", "RegExp.prototype.test()")}} +- {{jsxref("String.prototype.replaceAll()")}} +- {{jsxref("String.prototype.match()")}} +- {{jsxref("RegExp.prototype.exec()")}} +- {{jsxref("RegExp.prototype.test()")}} - [`Symbol.replace`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) -- [`RegExp.prototype[@@replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace) +- [`RegExp.prototype[Symbol.replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) diff --git a/files/ja/web/javascript/reference/global_objects/string/split/index.md b/files/ja/web/javascript/reference/global_objects/string/split/index.md index 86fa6a9f458090..25403ecb335e33 100644 --- a/files/ja/web/javascript/reference/global_objects/string/split/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/split/index.md @@ -2,12 +2,12 @@ title: String.prototype.split() slug: Web/JavaScript/Reference/Global_Objects/String/split l10n: - sourceCommit: 6d606174faaedaa5dee7b7ebd87602cd51e5dd7e + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} -**`split()`** メソッドは、パターンを受け取り、{{jsxref("String")}} をパターン検索によって部分文字列の順序付きリストに分割し、これらの部分文字列を配列に入れ、その配列を返します。 +**`split()`** は {{jsxref("String")}} 値のメソッドで、パターンを受け取り、この文字列をパターン検索によって部分文字列の順序付きリストに分割し、これらの部分文字列を配列に入れ、その配列を返します。 {{EmbedInteractiveExample("pages/js/string-split.html", "taller")}} @@ -21,7 +21,7 @@ split(separator, limit) ### 引数 - `separator` - - : 各分割がどこで行われるかを表すパターンです。`undefined`、文字列、または [`Symbol.split`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split) メソッドを持つオブジェクトを指定することができます。典型的な例は{{jsxref("Global_Objects/RegExp", "正規表現", "", 1)}}です。`separator` を省略したり `undefined` を渡したりすると、`split()` は呼び出し元の文字列を 1 つの要素とする配列を返します。`undefined` でない値、または `@@split` メソッドを持つオブジェクトはすべて[文字列に変換されます](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#文字列変換)。 + - : 各分割がどこで行われるかを表すパターンです。`undefined`、文字列、または [`Symbol.split`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split) メソッドを持つオブジェクトを指定することができます。典型的な例は{{jsxref("Global_Objects/RegExp", "正規表現", "", 1)}}です。`separator` を省略したり `undefined` を渡したりすると、`split()` は呼び出し元の文字列を 1 つの要素とする配列を返します。`undefined` でない値、または `[Symbol.split]()` メソッドを持つオブジェクトはすべて[文字列に変換されます](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#文字列変換)。 - `limit` {{optional_inline}} - : 配列に含める部分文字列の数の制限を指定する非負の整数。指定した場合は、指定した `separator` が出現するたびに文字列を分割しますが、`limit` 個の項目が配列に格納された時点で分割を終了します。残った文字列は配列に格納されません。 - 制限数に達する以前に文字列の末尾に達した場合は、配列の要素が `limit` よりも少なくなることがあります。 @@ -41,7 +41,7 @@ split(separator, limit) > したがって、`"".split("")` は `separator` として文字列を渡され、`limit` が `0` でないときに空の配列を生成する唯一の方法です。 > [!WARNING] -> 区切り文字として空文字列 (`""`) が用いられた場合、文字列はユーザが認識する文字([書記素クラスタ](https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries))や Unicode 文字(コードポイント)ではなく、UTF-16 コード単位で分割されます。 これは[サロゲートペア](https://unicode.org/faq/utf_bom.html#utf16-2)を破壊します。[StackOverflow の "How do you get a string to a character array in JavaScript?"](https://stackoverflow.com/questions/4547609/how-to-get-character-array-from-a-string/34717402#34717402) を参照してください。 +> 区切り文字として空文字列 (`""`) が用いられた場合、文字列はユーザーが認識する文字([書記素クラスタ](https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries))や Unicode 文字(コードポイント)ではなく、UTF-16 コード単位で分割されます。 これは[サロゲートペア](https://unicode.org/faq/utf_bom.html#utf16-2)を破壊します。[StackOverflow の "How do you get a string to a character array in JavaScript?"](https://stackoverflow.com/questions/4547609/how-to-get-character-array-from-a-string/34717402#34717402) を参照してください。 `separator` が空文字列に一致する正規表現である場合、一致する文字列が UTF-16 コード単位で分割されるか、Unicode コード点で分割されるかは、正規表現が [Unicode-aware](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode#unicode-aware_mode) かどうかに依存します。 @@ -288,4 +288,4 @@ console.log(commands.split(splitCommands, 3)); // ["light on", "brightness up", - {{jsxref("String.prototype.indexOf()")}} - {{jsxref("String.prototype.lastIndexOf()")}} - {{jsxref("Array.prototype.join()")}} -- [JavaScript での正規表現の使用](/ja/docs/Web/JavaScript/Guide/Regular_expressions) +- [正規表現](/ja/docs/Web/JavaScript/Guide/Regular_expressions)ガイド