需要將中文名轉為英文名,這裡需要考慮到姓氏以及名字多音字選擇,這裡記錄一下我實現的一種思路。
以下**均使用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.firstname
和this.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...