C# 处理汉字、拼音、笔画转换 Microsoft Visual Studio International Pack 1.0
2015-07-16 10:16
603 查看
(已经安装解压后的dll ,请添加至项目bin下)
http://files.cnblogs.com/Fooo/Microsoft_Visual_Studio_International_Pack_1.0.rar
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);
}
}
封装了简体中文的读音和笔画等基本信息。
使用的方法很简单,不过里面的方法都是对于一个汉字使用而言,而且会包含音调,譬如“张”,转换出来就会是“ZHANG1”,“学”,转换出来就会是“XUE2”,如此类推。因此自己再封装一下达到可以整个姓名转换成拼音,并去掉没用的音调。代码如下:
根据ChnCharInfo.dll 类,自己再封装一个自定义的汉转首个字母类。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.We
b5a3
b.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;
}
}
http://files.cnblogs.com/Fooo/Microsoft_Visual_Studio_International_Pack_1.0.rar
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.We
b5a3
b.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;
}
}
相关文章推荐
- C#实现基于IE内核的简单浏览器完整实例
- C#几种截取字符串的方法(split 、Substring、Replace、remove)
- C#几种截取字符串的方法(split 、Substring、Replace、remove)
- 读改善c#代码157个建议:建议7~9
- C#调用WebService
- C#反射(二) 【转】
- C#反射(一) 【转】
- C#窗口实现单例模式
- .Net学习笔记----2015-07-15(C#基础复习01)
- C#高级编程四十天----运算符重载
- C#中如何在程序中引用共享程序集
- C#高级编程三十九天----比较对象的相等性
- 读改善c#代码157个建议:建议4~6
- c#调用TeamViewer或AnyDesk实现远程控制
- C#实现多线程的Web代理服务器实例
- C#注册机与绑定软件(转发自:韩兆新的博客园的C#学习笔记——软件注册与注册机)
- c# 获取客户端ip、mac、机器名、操作系统、浏览器信息
- C#非递归先序遍历二叉树实例
- 转-C#让枚举返回字符串
- C# winform 导出pdf报表