將中文姓名轉為拼音英文名的一種實現

2022-08-02 05:15:06 字數 1999 閱讀 7765

需要將中文名轉為英文名,這裡需要考慮到姓氏以及名字多音字選擇,這裡記錄一下我實現的一種思路。

以下**均使用js來進行說明。

首先需要判斷名字長度以及名字規範

//中文名格式驗證

verifyname:

function

(str)

return

true;}

,

當名字長度超過兩個子的時候需要判斷複姓的情況,如名字為歐陽日天,那麼需要詢問使用者姓氏為歐陽還是歐,這裡只能通過提前預備所有的複姓列表進行檢測。

這裡提供乙份我自己整理的複姓列表,下面的doublefamilyname就是複姓列表陣列

我宣告乙個this.isdoublefamilyname用來標記是否為複姓的標記,預設為0,如果是複姓則2,單姓為1,這裡是處理邏輯

if

(str.length >

2&& doublefamilyname.

indexof

(str.

substr(0

,2))

>-1

)else

接下來需要判斷名字中的多音字,注意這裡的多音字是指拼寫不同,音調不同的忽略。這裡需要借助第三方的庫來將漢字轉為拼音,我使用的是在github上找的乙個庫,倉庫位址在這裡,使用方法很簡單

import pinyin from

'pinyin'

;//獲取這個字串的全部讀音

//得到乙個二維陣列

//資料格式如[ [ 'zhang', 'zhong' ], [ 'xin' ] ,['liu','ni']]

this

.py =

pinyin

(str,);

let py =

this

.py;

//這裡存全域性變數是為了後面可以復用

這裡宣告乙個this.namespell用來儲存最後的每個字的讀音陣列

考慮到實際使用中文名轉英文名都是轉為全大寫,這裡我也使用了touppercase()方法來轉換,如不需要自己手動去除這個方法即可

if

(py.

some

(i => i.length >1)

)else

現在我們已經將最後的整個拼音方案獲取到this.namespell,接下來就是處理姓和名的分割了。這裡使用this.firstnamethis.lastname分別儲存。

if

(this

.namespell.length >0)

elseif(

this

.isdoublefamilyname ==1)

}

到此我們已經完成整個從中文名轉為英文名的過程。

二維陣列的排列組合

/** 

* 傳入乙個二維陣列,如[ [ 'zhang', 'zhong' ], [ 'xin' ] ,['liu']]

* 返回[['zhang','xin','liu'],['zhong','xin','liu']]

*/function

(py)

for(

let i =

0; i < length; i++

) result.

push

(resultitem);}

return result;

}

正確的中文名翻譯英文名 下

英文名的排法 名 姓 pun 嬪 pun 濱 sai 世 sai 西 sai 細 sai 茜 sam 三 sam 森 san 山 sang 生 sau 秀 sau 修 se 畲 seck 石 see 施 sei 四 sek 石 shan 珊 she 畲 shek 碩 sheung 尚 sheung ...

中文字型的英文名稱

在網頁前端開發製作中經常遇到需要使用微軟雅黑,宋體等中文字型的情況,一般我們直接使用 font family 微軟雅黑 這樣的寫法,然而在一些英文系統或者mac中直接在css中使用中文可能會無法讀取,或者你是像我一樣,看到在css中出現中文就心裡不爽的人,那麼,介紹css中幾種中文字型的英文寫法 m...

css中文字型的英文名字

宋體 simsun 黑體 simhei 微軟雅黑 microsoft yahei 微軟正黑體 microsoft jhenghei 新宋體 nsimsun 新細明體 pmingliu 細明體 mingliu 標楷體 dfkai sb 仿宋 fangsong 楷體 kaiti 仿宋 gb2312 fa...