ASP.NET漢字轉拼音 - 輸入漢字擷取其拼音的具體實現_實用技巧

來源:互聯網
上載者:User

前不久看到有的朋友實現對商品名稱拼音的錄入,發現他的實現方式是手動輸入的,—_—#、同志們,福利來了!

微軟為了開發人員實現國際化語言的互轉,提供了Microsoft Visual Studio International Pack,這個擴充包裡面有中文、日文、韓文、英語等各國語言套件,並提供方法實現互轉、擷取拼音、擷取字數、甚至擷取筆畫數等等。

在這裡樣本講的是輸入漢字,擷取其拼音,擷取拼音和擷取拼音首字母實現效果分別如下:

首先,去微軟官網下載Microsoft Visual Studio International Pack語言套件,下載地址分別如下:
Microsoft Visual Studio International Pack 1.0 SR1

Microsoft Visual Studio International Feature Pack 2.0

下載後分別是“vsintlpack1.zip”、“Vsintlpack2.msi”、雙擊“Vsintlpack2.msi”安裝、路徑隨意、但是要記得、因為一會要引用的、
 安裝“Vsintlpack2.msi”之後、解壓“vsintlpack1.zip”、裡麵包含七個語言套件、
 例如中文轉拼音“CHSPinYinConv.msi”、簡體繁體互轉“CHTCHSConv.msi”等等。。

 在這裡我們用到的是“CHSPinYinConv.msi”、雙擊安裝成功後、開啟Visual Studio、建立一個WinForm項目、表單布局如上圖所示、
 

首先:添加剛剛安裝的語言套件引用:

“D:\Program Files (x86)\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\ChnCharInfo.dll”

預設是C盤、在這裡我安裝在D盤了,然後添加using引用:

複製代碼 代碼如下:

using Microsoft.International.Converters.PinYinConverter;//匯入拼音相關

建立擷取拼音的方法:
複製代碼 代碼如下:

/// <summary>
/// 漢字轉化為拼音
/// </summary>
/// <param name="str">漢字</param>
/// <returns>全拼</returns>
public static string GetPinyin(string str)
{
    string r = string.Empty;
    foreach (char obj in str)
    {
        try
        {
            ChineseChar chineseChar = new ChineseChar(obj);
            string t = chineseChar.Pinyins[0].ToString();
            r += t.Substring(0, t.Length - 1);
        }
        catch
        {
            r += obj.ToString();
        }
    }
    return r;
}

建立擷取漢字拼音首字母的方法:
複製代碼 代碼如下:

/// <summary>
/// 漢字轉化為拼音首字母
/// </summary>
/// <param name="str">漢字</param>
/// <returns>首字母</returns>
public static string GetFirstPinyin(string str)
{
    string r = string.Empty;
    foreach (char obj in str)
    {
        try
        {
            ChineseChar chineseChar = new ChineseChar(obj);
            string t = chineseChar.Pinyins[0].ToString();
            r += t.Substring(0, 1);
        }
        catch
        {
            r += obj.ToString();
        }
    }
    return r;
}

然後在“轉拼音”按鈕的點擊事件中調用上述方法:
複製代碼 代碼如下:

// 漢字轉拼音
private void btn_One_Click(object sender, EventArgs e)
{
    string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字元
    string result = GetPinyin(source);  // 調用方法,擷取拼音
    this.txt_Pinyin_One.Text = result;
}

在“轉首字母”按鈕點擊事件中調用上述方法:
複製代碼 代碼如下:

// 轉首字母
private void btn_Two_Click(object sender, EventArgs e)
{
    string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字元
    string result = GetFirstPinyin(source);  // 調用方法,擷取拼音
    this.txt_Pinyin_One.Text = result;
}

到此,已經完成了80%,運行程式,你會發現,當點擊“轉拼音”的時候,結果是這樣子的:

並不是我開始說的那種“Gu Ying”的效果啊、這是因為我在擷取拼音的時候簡單的處理了一下:

複製代碼 代碼如下:

// 漢字轉拼音
private void btn_One_Click(object sender, EventArgs e)
{
    string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字元

    string result = string.Empty;   // 轉拼音的結果
    string temp = string.Empty; // 下面foreach用到的臨時變數
    foreach (char item in source)   // 遍曆每個源字元
    {
        temp = GetPinyin(item.ToString());  // 將每個字元轉拼音
        // 處理:擷取首字母大寫、其餘字母小寫
        result += (String.Format("{0}{1} ", temp.Substring(0, 1).ToUpper(), temp.Substring(1).ToLower()));
    }

    //string result = GetPinyin(source);  // 調用方法,擷取拼音
    this.txt_Pinyin_One.Text = result;
}


OK、到此、這個功能已經實現完成了,還有其餘的語言套件功能,和此類似,大家可以百度“Microsoft Visual Studio International Pack使用”、各種語言之間的互轉及功能樣本就出來了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.