JavaScript で文字列内のアクセント記号/発音記号を削除する
文字列からアクセント付き文字を削除することは、テキスト処理やデータ分析に役立つタスクです。提供されたコードでは、accentsTidy 関数は正規表現を使用してアクセントを削除しようとします。ただし、このアプローチは、特に IE6 などの古いブラウザでは効率的または信頼性が低い可能性があります。
ES2015/ES6 ソリューション
より現代的で効率的なソリューションは、 ES2015/ES6 String.prototype.normalize() メソッド。このメソッドは、文字列を Unicode 正規化形式に変換します。結合書記素を基本文字と結合記号に分解する「NFD」形式を使用すると、発音記号の削除が容易になります。以下に例を示します。
const str = "Crème Brûlée"; str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // "Creme Brulee"
この正規表現は、さまざまな発音記号を含む Unicode 範囲 U 0300 → U 036F に一致します。 「NFKD」などの他の Unicode 標準形式を使用して、uFB01 (fi) のような文字を別の方法で正規化することができます。
Unicode プロパティ エスケープの使用
ES2018 では Unicode プロパティ エスケープが導入されました。より簡潔な削除方法を提供する発音記号:
str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // "Creme Brulee"
このエスケープは、Unicode プロパティ「発音記号」を持つすべての文字と一致します。
代わりに: 並べ替え
目的が次の場合アクセント付き文字列を並べ替えるには、Intl.Collator オブジェクトを使用できます。 Unicode の正規の順序に基づいて文字列を並べ替えることがサポートされており、発音記号は無視されます。以下に例を示します:
const c = new Intl.Collator(); ["creme brulee", "crème brûlée", "crame brulai", "crome brouillé", "creme brulay", "creme brulfé", "creme bruléa"].sort(c.compare); // ['crame brulai', 'creme brulay', 'creme bruléa', 'creme brulee', 'crème brûlée', 'creme brulfé', 'crome brouillé']
以上がJavaScript の文字列からアクセントを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。