您的位置:首页 > 其它

Microsoft Visual Studio International Pack 1.0 处理汉字、拼音、笔画转换

2009-05-13 23:37 567 查看
(已经安装解压后的dll ,请添加至项目bin下)

http://files.cnblogs.com/Fooo/Microsoft_Visual_Studio_International_Pack_1.0.rar [/u]



2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn 该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。

East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。

Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。

Japanese Text Alignment Library - 支持日文特有的一种对齐格式。

Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控件的示例。

Korean Auto Complete TextBox Control - 支持韩文输入法的智能感知和输入自动完成的文本框控件。

Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。

Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支持简繁体中文之间的转换。该组件还包含一个Visual Studio集成开发环境中的插件(Add-in)支持简繁体中文资源文件之间的转换。

下载完毕后,进行解压,里面有7个msi文件,其中:CHSPinYinConv.msi就是汉字拼音相关的,CHTCHSConv.msi是进行简体与繁体进行相互转换的,值安装这2个msi即可。安装完毕后,需要在VS里添加引用,分别引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用。下面是一个汉字“中”的测试例子:

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.International.Converters.PinYinConverter;

using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

using System.Collections.ObjectModel;

public partial class Default2 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

ChineseChar chineseChar = new ChineseChar(System.Char.Parse("我"));

Response.Write("<h2>关于汉字 “中” 的相关信息:</h2>");

Response.Write("<li>“中”笔画数:" + ChineseChar.GetStrokeNumber('中'));

Response.Write("<li>“中”是否是多音字: " + chineseChar.IsPolyphone);

ReadOnlyCollection<string> pinyin = chineseChar.Pinyins;

Response.Write("<li>“中”所有拼音:");

foreach (string pin in pinyin)

{

Response.Write(pin + ",");

}

char[] ChineseChars;

Response.Write("<li>所有拼音 MENG1 的汉字<br/>");

ChineseChars = ChineseChar.GetChars("MENG1");

Response.Write("共" + ChineseChars.Length.ToString() + "个,分别是:");

for (int i = 0; i < ChineseChars.Length; i++)

{

Response.Write(ChineseChars[i] + ",");

}

String simText = "中国人";

String traText = ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);

Response.Write("<li>繁简转换测试:" + traText);

}

}

封装了简体中文的读音和笔画等基本信息。

成员类型成员描述
ChineseCharNew(Char)ChineseChar类的构造函数。
ChineseCharacter获取这个汉字字符。
CompareStrokeNumber(Char)将给出的字符和实例字符的笔画数进行比较。
静态成员GetCharCount(Int16)检索具有指定笔画数的字符个数。
静态成员GetChars(String)获取给定拼音的所有同音字。
静态成员GetChars(Int16)检索具有指定笔画数的所有字符串。
静态成员GetHomophoneCount(String)检索具有指定拼音的字符数。
静态成员GetStrokeNumber(Char)检索指定字符的笔画数。
HasSound(String)识别字符是否有指定的读音。
IsHomophone(Char)识别给出的字符是否是实例字符的同音字。
静态成员IsHomophone(Char, Char)识别给出的两个字符是否是同音字。
IsPolyphone获取这个字符是否是多音字。
静态成员IsValidChar(Char)识别给出的字符串是否是一个有效的汉字字符。
静态成员IsValidPinyin(String)识别给出的拼音是否是一个有效的拼音字符串。
静态成员IsValidStrokeNumber(Int16)识别给出的笔画数是否是一个有效的笔画数。
PinyinCount获取这个字符的拼音个数。
Pinyins获取这个字符的拼音。
StrokeNumber获取这个字符的笔画数。
使用的方法很简单,不过里面的方法都是对于一个汉字使用而言,而且会包含音调,譬如“张”,转换出来就会是“ZHANG1”,“学”,转换出来就会是“XUE2”,如此类推。因此自己再封装一下达到可以整个姓名转换成拼音,并去掉没用的音调。代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Microsoft.International.Converters.PinYinConverter;

using System.Collections.ObjectModel;

using System.Text;

/// <summary>

/// PinYinConverter 的摘要说明

/// </summary>

public class PinYinConverter

{

/// <summary>

/// 将字符串转换成拼音

/// </summary>

/// <param name="chineseStr">姓名字符串</param>

/// <param name="includeTone">是否包含音调</param>

/// <returns></returns>

public static string ConvertToPinYin(string chineseStr, bool includeTone)

{

if (chineseStr == null)

throw new ArgumentNullException("chineseStr");

char[] charArray = chineseStr.ToCharArray();

StringBuilder sb = new StringBuilder();

foreach (char c in charArray)

{

ChineseChar chineseChar = new ChineseChar(c);

ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;

foreach (string py in pyColl)

{

sb.Append(py);

}

}

if (!includeTone)

{

StringBuilder sb2 = new StringBuilder();

foreach (char c in sb.ToString())

{

if (!char.IsNumber(c))

sb2.Append(c);

}

return sb2.ToString();

}

return sb.ToString();

}

public static string ConvertToPinYin(string chineseStr)

{

//return ConvertToPinYin(chineseStr, true);

return ConvertToPinYin(chineseStr, false);

}

public static bool IsValidChar(char ch)

{

return ChineseChar.IsValidChar(ch);

}

/// <summary>

/// 是否为有效的中文字

/// </summary>

/// <param name="chn"></param>

/// <returns></returns>

public static bool IsValidChinese(string chn)

{

if (chn == null)

throw new ArgumentNullException("chn");

foreach (char c in chn)

{

if (!IsValidChar(c))

return false;

}

return true;

}

}

根据ChnCharInfo.dll 类,自己再封装一个自定义的汉转首个字母类。

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Microsoft.International.Converters.PinYinConverter;

using System.Collections.ObjectModel;

using System.Text;

using System.Text.RegularExpressions;

/// <summary>

/// 汉字转拼音类

/// </summary>

public class PinYinConver

{

public PinYinConver()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

/// <summary>

/// 把汉字转换成拼音(全拼)

/// by

/// </summary>

/// <param name="hzString">汉字字符串</param>

/// <returns>转换后的拼音(全拼)字符串</returns>

public static string Convert(string hzString)

{

if (string.IsNullOrEmpty(hzString))

return "";

char[] noWChar = hzString.ToCharArray();

string txt = "";

for (int j = 0; j < noWChar.Length; j++)

{

if (IsValidChar(noWChar[j]))

{

txt += ConvertToFirstPinYin(noWChar[j].ToString());

}

}

return txt;

}

/// <summary>

/// 将字符串转换成首个拼音

/// </summary>

/// <param name="chineseStr">字符串</param>

/// <returns></returns>

public static string ConvertToFirstPinYin(string chineseStr)

{

if (chineseStr == null)

return "";

char[] charArray = chineseStr.ToCharArray();

StringBuilder sb = new StringBuilder();

foreach (char c in charArray)

{

ChineseChar chineseChar = new ChineseChar(c);

ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;

foreach (string py in pyColl)

{

if (py != null)

{

sb.Append(py.Substring(0 , 1));

break;

}

}

}

return sb.ToString();

}

/// <summary>

/// 将字符串转换成拼音

/// </summary>

/// <param name="chineseStr">姓名字符串</param>

/// <param name="includeTone">是否包含音调</param>

/// <returns></returns>

public static string ConvertToPinYin(string chineseStr, bool includeTone)

{

if (chineseStr == null)

throw new ArgumentNullException("chineseStr");

char[] charArray = chineseStr.ToCharArray();

StringBuilder sb = new StringBuilder();

foreach (char c in charArray)

{

ChineseChar chineseChar = new ChineseChar(c);

ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;

foreach (string py in pyColl)

{

sb.Append(py);

}

}

if (!includeTone)

{

StringBuilder sb2 = new StringBuilder();

foreach (char c in sb.ToString())

{

if (!char.IsNumber(c))

sb2.Append(c);

}

return sb2.ToString();

}

return sb.ToString();

}

public static string ConvertToPinYin(string chineseStr)

{

return ConvertToPinYin(chineseStr, true);

}

public static bool IsValidChar(char ch)

{

return ChineseChar.IsValidChar(ch);

}

/// <summary>

/// 是否为有效的中文字

/// </summary>

/// <param name="chn"></param>

/// <returns></returns>

public static bool IsValidChinese(string chn)

{

if (chn == null)

return false;

foreach (char c in chn)

{

if (!IsValidChar(c))

return false;

}

return true;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐