




下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025安徽皖信人力資源管理有限公司招聘18人筆試參考題庫附帶答案詳解析
- 2025四川成都軌道交通集團(tuán)有限公司招聘8人筆試參考題庫附帶答案詳解析
- qc小組考試試題及答案
- 2025年家庭裝修設(shè)計(jì)合同范本
- 節(jié)能環(huán)保型廠房使用權(quán)轉(zhuǎn)讓協(xié)議
- 2025集體土地流轉(zhuǎn)合同
- mri上崗證考試試題及答案2025
- 城市擴(kuò)建拆遷補(bǔ)償與房屋租賃合同
- 測試質(zhì)量保證的成功策略試題及答案
- 2025年運(yùn)動(dòng)品牌數(shù)字化營銷策略在體育賽事營銷中的應(yīng)用報(bào)告
- 餐飲企業(yè)財(cái)務(wù)流程解析
- 擔(dān)保責(zé)任轉(zhuǎn)移協(xié)議書(2篇)
- 供電公司新聞宣傳工作培訓(xùn)
- 大學(xué)美育知到智慧樹章節(jié)測試課后答案2024年秋德州學(xué)院
- DB37T-九小場所消防安全管理要求
- 企業(yè)食品安全知識(shí)培訓(xùn)課件
- 【MOOC】中國近現(xiàn)代史綱要-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 【MOOC】獸醫(yī)外科手術(shù)學(xué)-華中農(nóng)業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 數(shù)控機(jī)床裝調(diào)維修工(技師)職業(yè)技能鑒定理論考試題庫(含答案)
- 金蝶云星空應(yīng)用開發(fā)初級(jí)認(rèn)證
- 2021年中等職業(yè)學(xué)校學(xué)生學(xué)業(yè)水平考試考務(wù)工作細(xì)則(考務(wù)手冊(cè))
評(píng)論
0/150
提交評(píng)論