pīnyīn, 漢字拼音轉換工具。
轉換中文字符爲拼音。可以用於漢字注音、排序、檢索。
注:這個版本同時支持在 Node 和 Web 瀏覽器環境運行,
Python 版請關注 mozillazg/python-pinyin
via npm:
開髮者:
命令行:
傳入給 pinyin 方法的第二個參數的選項類型。
輸出拼音格式。可以從直接使用以下字符串或數字,也兼容 v2 版本中 pinyin.STYLE_TONE
這樣的形式。
拼音模式,默認普通模式,可以指定人名模式。
分詞方式。
false
,true
開啟,Web 和 Node 版中均使用 "Intl.Segmenter" 分詞。<Array> pinyin(words: string[, options: IPinyinOptions])
將傳入的中文字符串 (words) 轉換成拼音符號串。
options 是可選的,可以設定拼音風格,或打開多音字選項。
返回二維數組,第一維每個數組項位置對應每個中文字符串位置。 第二維是各個漢字的讀音列表,多音字會有多個拼音項。
Number compare(a, b)
按拼音排序的默認算法。
string[][] compact(pinyinResult array[][])
將拼音多音字以各種可能的組合排列變換成緊湊形式。參考 options.compact
<Boolean|IPinyinSegment> options.segment
是否啟用分詞模式,中文分詞有助於極大的降低多音字問題。 但性能會極大的下降,內存也會使用更多。
segemnt = true
,默認使用 Intl.Segmenter 分詞。<Boolean> options.heteronym
是否啟用多音字模式,默認關閉。
關閉多音字模式時,返回每個漢字第一個匹配的拼音。
啟用多音字模式時,返回多音字的所有拼音列表。
<Boolean> options.group
按詞組分組拼音,例如:
<IPinyinStyle> options.style
指定拼音風格。可以使用以下特定字符串或數值指定:
NORMAL
, normal
普通風格,即不帶聲調。
如:pin yin
TONE
, tone
聲調風格,拼音聲調在韻母第一個字母上。
注:這是默認的風格。
如:pīn yīn
TONE2
, tone2
聲調風格 2,即拼音聲調以數字形式在各個拼音之後,用數字 [0-4] 進行表示。
如:pin1 yin1
TO3NE
, to3ne
聲調風格 3,即拼音聲調以數字形式在注音字符之後,用數字 [0-4] 進行表示。
如:pi1n yi1n
INITIALS
, initials
聲母風格,隻返回各個拼音的聲母部分。對於沒有聲母的漢字,返回空白字符串。
如:中國
的拼音 zh g
注:聲母風格會區分 zh
和 z
,ch
和 c
,sh
和 s
。
注意:部分漢字沒有聲母,如 啊
,餓
等,另外 y
, w
, yu
都不是聲母,
這些漢字的拼音聲母風格會返回 ""
。請仔細考慮你的需求是否應該使用首字母風格。
詳情請參考 [爲什麼沒有 y, w, yu 幾個聲母](#爲什麼沒有 -y-w-yu- 幾個聲母)
FIRST_LETTER
, first_letter
首字母風格,隻返回拼音的首字母部分。
如:p y
PASSPORT
, passport
護照風格。轉換成大冩形式,並且 ü
會以 YU
形式輸出。
國家移民管理局門戶網站於2021年9月29日髮佈了《關於內地居民拼音姓名中字母“ü”在出入境証件中打印規則的公告》(以下簡稱公告),根據《中國人名漢語拼音字母拼冩規則》和《關於機讀旅行証件的相關國際通用規範》, 內地居民申辦出入境証件,出入境証件上打印的持証人拼音姓名中,Lü(呂等字)、Nü(女等字)中的字母“ü”應當轉換爲“YU”,LüE(略等字)、NüE(虐等字)中的字母“ü”應當轉換爲“U”。
拼音模式,默認 "NORMAL" 普通模式。 如果你明確的在姓名場景下,可以使用 "SURNAME" 讓姓氏使用更準確的拼音。
NORMAL
:普通模式,自動識別讀音。SURNAME
:姓名模式,對於明確的姓名場景,可以更準確的識別姓氏的讀音。是否返回緊湊模式,默認 false,按標準格式返回。 如果設置爲 true,則將多音字可能的各種組合排列後返回。例如:
你也可以必要時使用 compact()
函數處理 pinyin(han, {compact:false})
返回的結果。
首先,我建議大家應該優先考慮在服務端一次性轉換拼音並將結果持久化,避免在客戶端每次轉換損耗性能和體驗。
如果你堅持在客戶端使用,你可以考慮使用 Webpack + Babel 來轉換成低端瀏覽器的可執行代碼。
實在不想折騰,可以試試 https://www.jsdelivr.com/package/npm/pinyin
y
, w
, yu
幾個聲母?聲母風格(INITIALS)下,“雨”、“我”、“圓”等漢字返回空字符串,因爲根據《漢語拼音方案》,
y
,w
,ü (yu)
都不是聲母,在某些特定韻母無聲母時,才加上 y
或 w
,而 ü
也有其特定規則。
如果你覺得這個給你帶來了麻煩,那麼也請小心一些無聲母的漢字(如“啊”、“餓”、“按”、“昂”等)。 這時候你也許需要的是首字母風格(FIRST_LETTER)。
pinyin 模塊提供了默認的排序方案:
如果默認的比較方法不能滿足你的需求,你可以自定義 pinyinCompare 方法:
pinyin
目前可以同時運行在 Node 服務器端和 Web 瀏覽器端。
API 和使用方式完成一緻。
但 Web 版較 Node 版稍簡單,拼音庫隻有常用字部分,沒有使用分詞算法, 並且考慮了網絡傳輸對詞庫進行了壓縮處理。
由於分詞和繁體中文的特性,部分情況下的結果也不儘相同。
特性 | Web 版 | Node 版 |
---|---|---|
拼音庫 | 常用字庫。壓縮、合並 | 完整字庫。不壓縮、合並 |
分詞 | 沒有分詞 | 使用分詞算法,多音字拼音更準確。 |
拼音頻度排序 | 有根據拼音使用頻度優先級排序。 | 同 Web 版。 |
繁體中文 | 沒有繁體中文支持。 | 有簡單的繁簡漢字轉換。 |
由於這些區別,測試不同運行環境的用例也不儘相同。
如果這個模塊有幫助到您,請 Star 這個倉庫。
你也可以選擇使用支付寶或微信給我捐贈: