1. 中国語のピンインへの変換の現状
まず第一に、連絡先をピンイン文字でソート/フィルタリングするなど、中国語のピンインへの変換に対する強い需要があると言われるべきです。目的地(通常はチケット購入など)
ピンインの頭文字による分類など お待ちください。しかし、この要件の解決策は、(特にブラウザ側で)賢い実装については聞いたことがありませんが、おそらく巨大な辞書が必要です。
特に JavaScript については、github と npm を確認してください。中国語の文字をピンインに変換するための優れたライブラリには、pinyin
と pinyinjs が含まれています。どちらにも膨大な辞書が付属していることがわかります。
これらの辞書は数十、数百 KB (場合によっては数 MB) になることが多く、ブラウザ側で使用するにはまだ勇気が必要です。したがって、中国語の文字をピンインに変換する必要がある場合、最初の反応はリクエストを拒否する (またはサーバー側で実装する) ことになるのは驚くべきことではありません。
さて、ブラウザ側の 300 行のコードで中国語の文字をピンインに変換できると言ったら、信じられませんか?
2. Android 4.2.2 連絡先コードから始めます
このブログでもう一度強調します - Android ソース コードを使用して、漢字からピンインへの変換機能を簡単に実現します。
今日は、Android システムのソース コードから抽出した中国語の文字をピンインに変換するソリューションを紹介します。たった 1 つのクラスと 560 行を超えるコードで、他の 3 番目のコードを使用せずに、中国語の文字をピンインに変換する機能を簡単に実装できます。 -パーティの依存関係。
それはあなたの考えを壊しましたか: 辞書を放棄できる強力なアルゴリズムはありますか?
初めてブログを読んだ後、Android コードから発見された数百行のコードが紹介されているだけで、少しがっかりしました。 JavaScript に移植しようと思ってコードを 2 回目に読んだときに、ようやく原理が理解できたので、移植の旅を始めました。
3. 中国語の文字をピンインに変換するための 300 行の JavaScript コードをステップごとに説明します
まず、核心に直接触れましょう: なぜ中国語の文字をピンインに変換するという考え方があるのですか巨大な辞書が必要ですか?
漢字の配列はピンインとは関係がないため、たとえば、u4E00-u9FFFの漢字区間では、前者がハ、後者がゼである可能性があり、漢字のUnicodeを関連付けることはできません。この辞書には、各漢字 (または常用漢字) のピンインが記録されています。
ただし、「A」、「AI」、「AN」、「ANG」、「AO」、「BA」、...、「ZUI」、「ZUN」など、すべての漢字をピンインで並べ替えることができるとします。 、「ZUO」でソートすると、同じピンインを持つ各漢字 queue の最初の漢字を覚えるだけで済みます。そうすれば、必要な辞書は非常に少なくなります(すべてのピンインをカバーするだけで、ピンイン自体の数は多くありません)。
さて、難しいのは中国語の文字をピンインで並べ替えることです。幸いなことに、ICU/ローカリゼーション関連の API は、この並べ替え API を提供しています (便利な並べ替え/比較メソッドがなかった場合、この記事は表示されない可能性があります)。
これが、中国語の文字をピンインに変換するために 300 行を使用できる理由です: Intl.CollatorAPI: Intl.Collator は、ローカリゼーション関連の 文字列ソートを内部的に実装します。基本的に、Intl.Collator.prototype.compare を使用して、すべての中国語の文字をピンインに従って並べ替えることができます。
境界漢字テーブル: ソートされた境界点を記録します。この漢字テーブルの各漢字は、並べ替え後の同じピンインを持つ一連の漢字の最初の漢字です (各中国語は、collator が zh_CN の場合、同じピンイン内の最初の漢字になります)。
そう言えば、まだ不明な点があるかもしれないので、コードの一部に直接進みましょう:
興味のある学生は、上記のnode--icu-data-dir=node_modules/full-icuを実行して確認してください。 script.js を開き、基本的にピンインでソートされた漢字テーブルが得られるかどうかを確認します。
注意すべき点がいくつかあります:
取得した中国語の文字のリストがピンインに従って完全にソートされていないため、再度「基本」を太字にしました。一部の中国語の文字の途中に他のピンインが挿入されている場合があります。これは、境界テーブルを作成するときに特に注意する必要があります。
上記のスクリプトで取得したテーブルは、すべての漢字のソートです。一部のテーブルは、Android コードの HanziToPinyin.java のテーブルと異なるため、HanziToPinyin.java のテーブルを更新する必要があります。 (Java から JavaScript に切り替える際の最大の落とし穴と作業負荷: 境界テーブルの修正)
誰もがコア コード: constCOLLATOR=newIntl.Collator(['zh-Hans-CN']), Intl.Collator
(ここで指定されたロケールは中国です zh-Hans-CN)は、中国語の文字をピンインでソートするためのキーです。これは、文字列をロケール固有の順序でソートする国際化 API です。
スクリプトを実行するときは、最初に npmifull-icu を実行してください。この依存関係により、不足している中国語サポートが自動的にインストールされ、スクリプトを実行するための ICU データ ファイルを指定する方法が求められます。
1.ICUICU は InternationalComponentsforUnicode の略で、アプリケーションに Unicode と国際化サポートを提供します。
ICU は、ソフトウェア アプリケーションに Unicode とグローバリゼーションのサポートを提供する、広く使用されている C/C++ ライブラリと Java ライブラリのセットです。ICU は広く移植可能であり、C/C++ と Java ソフトウェア間のすべてのプラットフォームで同じ結果をアプリケーションに提供します。
ICU は、ローカライズされた文字列比較サービス (UnicodeCollation Algorithm + ローカル固有の比較ルール) を提供します。
Collation:Compare ICU の照合は、Unicode 照合アルゴリズムと、このタイプのデータの包括的なソースである Common Locale Data Repository からのロケール固有の比較ルールに基づいています。
最新のブラウザでは、一般に ICU にユーザーのローカル言語のサポートが組み込まれており、それを直接使用できます。
しかし、node.js の場合、通常、ICU にはサブセット (通常は英語) しか含まれていないため、独自に中国語のサポートを追加する必要があります。一般に、不足している中国語サポートは、npminstallfull-icu 経由で full-icu
をインストールすることでインストールできます。 (上記のnode--icu-data-dir=node_modules/full-icuを参照してください)。
2.IntlAPI 前のセクションでは基本的に国際化/ローカライゼーションに関する知識を説明しました。ここで組み込み API の使用方法を追加します。ユーザー言語とランタイムがこの言語をサポートしているかどうかを確認するにはどうすればよいですか? Intl.Collator.supportedLocalesOf(array|string)
サポートされているロケールを含む array を返します (デフォルトのロケールに戻ることなく) パラメーターには、テストするロケールである配列または文字列を指定できます (つまり、BCP47 言語タグ)。
Collator オブジェクト を構築し、文字列
Intl.Collator.prototype.compare を使用すると、言語で指定された順序で文字列を並べ替えることができます。中国語では、この並べ替えはほとんどの場合ピンイン順、「A」、「AI」、「AN」、「ANG」、「AO」、「BA」、「BAI」、「BAN」、「BANG」、」になります。バオ」、「ベイ」、「ベン」、「ベン」、「ビ」、「ビアン」、「ビアオ」、「ビー」、「ビン」、「ビン」、「ボ」、「ブ」、「CA」 、'CAI'、'CAN'、...
、これが上で説明した中国語の文字をピンインに変換するための鍵です。
4. 境界テーブルの修正
明らかに、この境界テーブルには問題があるため、修正する必要があります。
ほとんどの漢字が清に変換されていることがわかります。清のピンインに対応する漢字に問題があることがわかります。
この漢字が見つかりました。「u72c5」/「狅」とその前後に 1 文字加えたものです、['u4eb2','u72c5','u828e']/["奇","狅","苎"]
。
検索、'u72c5'/'狅'はqingと読めるのですが、現在はkuangと読まれており、これがエラーの原因となります。
すべての漢字の初期ソートリストによると、清の最初の漢字は「u9751」/「靑」です。
変更後、失敗した変換は 104 件のみになりました。
【関連する推奨事項】
3. JavaScript による検索ツールバーの実装の詳細な例
4. 。JavaScript での async と await の使用法の詳細な紹介
5. JavaScript の最も実践的な 12 のヒントを共有します
以上がJavaScriptを使って漢字をピンインに変換する例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









