C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼_第1頁
C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼_第2頁
C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼_第3頁
C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼_第4頁
C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第C#實(shí)現(xiàn)漢字轉(zhuǎn)漢語拼音的示例代碼目錄一、使用PinYinConverterCore獲取漢語拼音二、編寫工具擴(kuò)展類實(shí)現(xiàn)獲取漢字的拼音三、編寫測試用例

一、使用PinYinConverterCore獲取漢語拼音

最新在做一個(gè)搜索組件,需要使用漢語拼音的首字母查詢出符合條件的物品名稱,由于漢字存在多音字,所以自己寫查詢組件不太現(xiàn)實(shí),因此,我們使用微軟提供的CHSPinYinConv,CHSPinYinConv在.netcore下載安裝沒有問題,但在.netframework會(huì)由于兼容性會(huì)安裝失敗,因此使用了PinYinConverterCore來實(shí)現(xiàn)漢字轉(zhuǎn)拼音,PinYinConverterCore應(yīng)該也是基于CHSPinYinConv開發(fā)的兼容包,后續(xù)的代碼兩個(gè)安裝包環(huán)境下都可以使用。使用Nuget搜索PinYinConverterCore下載并安裝,具體如下:

二、編寫工具擴(kuò)展類實(shí)現(xiàn)獲取漢字的拼音

由于漢字存在多音字,因此,通過漢字獲取到的拼音是一個(gè)數(shù)組,具體如下:

///summary

///漢字轉(zhuǎn)換拼音

////summary

publicstaticclassPingYinUtil

privatestaticDictionaryint,ListstringGetTotalPingYinDictionary(stringtext)

varchs=text.ToCharArray();

//記錄每個(gè)漢字的全拼

Dictionaryint,ListstringtotalPingYinList=newDictionaryint,Liststring();

for(inti=0;ichs.Length;i++)

varpinyinList=newListstring

//是否是有效的漢字

if(ChineseChar.IsValidChar(chs[i]))

ChineseCharcc=newChineseChar(chs[i]);

pinyinList=cc.Pinyins.Where(p=!string.IsNullOrWhiteSpace(p)).ToList();

else

pinyinList.Add(chs[i].ToString());

//去除聲調(diào),轉(zhuǎn)小寫

pinyinList=pinyinList.ConvertAll(p=Regex.Replace(p,@"\d","").ToLower());

//去重

pinyinList=pinyinList.Where(p=!string.IsNullOrWhiteSpace(p)).Distinct().ToList();

if(pinyinList.Any())

totalPingYinList[i]=pinyinList;

returntotalPingYinList;

///summary

///獲取漢語拼音全拼

////summary

///paramname="text"Thestring./param

///returns/returns

publicstaticListstringGetTotalPingYin(thisstringtext)

varresult=newListstring

foreach(varpysinGetTotalPingYinDictionary(text))

varitems=pys.Value;

if(result.Count=0)

result=items;

else

//全拼循環(huán)匹配

varnewTotalPingYinList=newListstring

foreach(vartotalPingYininresult)

newTotalPingYinList.AddRange(items.Select(item=totalPingYin+item));

newTotalPingYinList=newTotalPingYinList.Distinct().ToList();

result=newTotalPingYinList;

returnresult;

///summary

///獲取漢語拼音首字母

////summary

///paramname="text"/param

///returns/returns

publicstaticListstringGetFirstPingYin(thisstringtext)

varresult=newListstring

foreach(varpysinGetTotalPingYinDictionary(text))

varitems=pys.Value;

if(result.Count=0)

result=items.ConvertAll(p=p.Substring(0,1)).Distinct().ToList();

else

//首字母循環(huán)匹配

varnewFirstPingYinList=newListstring

foreach(varfirstPingYininresult)

newFirstPingYinList.AddRange(items.Select(item=firstPingYin+item.Substring(0,1)));

newFirstPingYinList=newFirstPingYinList.Distinct().ToList();

result=newFirstPingYinList;

returnresult;

}

三、編寫測試用例

我們編寫一個(gè)測試用例,通過輸入的漢字獲取到漢語拼音的全拼和首字母縮寫,具體如下:

//漢字輸入

stringtext=TextBoxInput.Text;

//獲取到漢語拼音的全拼

TextBoxTotal.Text=string.Join(",",text.GetTotalPingYin());

//獲取到漢語拼音的首字母

TextBoxFirst.Text=string.Join(",",text.GetFirstPingYin());

我們編寫錄入一組用戶名,然后根據(jù)輸入輸入的用戶名的縮寫,篩選出符合條件的人,我們可以使用Linq模糊查詢,具體如下:

publicclassStudent

publicstringName{get;set;}

publicListstringPinyin{get;set;}

}

StudentList=newListStudent

newStudent(){Name="張三"},

newStudent(){Name="章黎"},

newStudent(){Name="張三豐"},

newStudent(){Name="李四"},

newStudent(){Name="王五"},

newStudent(){Name="John"},

newStudent(){Name="W.吳"},

newStudent(){Name="阿姨"},

newStudent(){Name="阿膠"},

newStudent(){Name="麥合蘇提.麥合蘇提"}

};

vartext=TextBoxSearc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論