C#之使用StringHelper来处理汉字转拼音

StringHelper字符串处理帮助

现在已经实现的功能有:

1.用给定的字符填充源字符串的左边以达到指定的长度

2.用给定的字符填充源字符串的右边以达到指定的长度

3.转半角的函数(DBC case)

4.转全角的函数(SBC case)

5.汉字转拼音缩写

6.取单个字符的拼音声母

等等

演示一下:汉字转拼音缩写

 我是那Windows窗体写的

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PyCodeDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.label1.Text = StringHelper.PYConvert(this.textBox1.Text.Trim(), true);
        }
    }
}

实现后的结果:

下面看一下StringHepler的代码:

using System;

namespace PyCodeDemo
{
	/// <summary>
	/// StringHelper 的摘要说明。
	/// </summary>
	public class StringHelper
	{
		public StringHelper()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
//		/// <summary>
//		/// 用给定的字符填充源字符串的左边以达到指定的长度
//		/// </summary>
//		/// <param name="sourceString">源字符串</param>
//		/// <param name="maxLength">字符串指定的长度</param>
//		/// <param name="padCharacter">填充字符</param>
//		/// <returns></returns>
//		// public static string PadString(string sourceString, int maxLength, string padCharacter)
//		public static string LeftPadString(string sourceString, int maxLength, char padCharacter)
//		{
//
//			string result = "";
//
//			if (sourceString.Length > maxLength)
//			{
//				result = sourceString.Substring(0,maxLength);
//			}
//			else
//			{
//				result = sourceString.PadLeft(maxLength,padCharacter);
				while (result.Length < maxLength)
				{
					result += padCharacter;
				}
//
//			}
//			 
//			return result;
//
//		}
//		/// <summary>
//		/// 用给定的字符填充源字符串的右边以达到指定的长度
//		/// </summary>
//		/// <param name="sourceString">源字符串</param>
//		/// <param name="maxLength">字符串指定的长度</param>
//		/// <param name="padCharacter">填充字符</param>
//		/// <returns></returns>
//		public static string RightPadString(string sourceString, int maxLength, char padCharacter)
//		{
//
//			string result = "";
//
//			if (sourceString.Length > maxLength)
//			{
//				result = sourceString.Substring(0,maxLength);
//			}
//			else
//			{
//				result = sourceString.PadRight(maxLength,padCharacter);
//				//				while (result.Length < maxLength)
//				//				{
//				//					result += padCharacter;
//				//				}
//
//			}
//			 
//			return result;
//
//		}

		/** <summary>
		/// 转半角的函数(DBC case)
		/// </summary>
		/// <param name="input">任意字符串</param>
		/// <returns>半角字符串</returns>
		///<remarks>
		///全角空格为12288,半角空格为32
		///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
		///</remarks>
		public static string ToDBC(string input)
		{    
			char[] c=input.ToCharArray();
			for (int i = 0; i < c.Length; i++)
			{
				if (c[i]==12288)
				{
					c[i]= (char)32;
					continue;
				}
				if (c[i]>65280 && c[i]<65375)
					c[i]=(char)(c[i]-65248);
			}    
			return new string(c);
		}

		/// <summary>
		/// 转全角的函数(SBC case)
		/// </summary>
		/// <param name="input">任意字符串</param>
		/// <returns>全角字符串</returns>
		///<remarks>
		///全角空格为12288,半角空格为32
		///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
		///</remarks>        
		public static string ToSBC(string input)
		{
			//半角转全角:
			char[] c=input.ToCharArray();
			for (int i = 0; i < c.Length; i++)
			{
				if (c[i]==32)
				{
					c[i]=(char)12288;
					continue;
				}
				if (c[i]<127)
					c[i]=(char)(c[i]+65248);
			}
			return new string(c);                
		}

		/// <summary>

		/// 汉字转拼音缩写

		/// </summary>

		/// <param name="str">要转换的汉字字符串</param>

		/// <returns>拼音缩写</returns>

		public static string PYConvert(string str,bool Upper)

		{

			string Result = string.Empty;

			foreach(char c in str)

			{

				if((int)c >= 33 && (int)c <=126)

				{//字母和符号原样保留

					Result += c.ToString();

				}

				else

				{//累加拼音声母

					Result += Convert(c.ToString(),Upper);

				}

			}
			if (Upper)
			{
               Result=Result.ToUpper();

			}

			return Result;

		}

 

		/// <summary>

		/// 取单个字符的拼音声母

		/// </summary>

		/// <param name="c">要转换的单个汉字</param>

		/// <returns>拼音声母</returns>

		internal static string Convert(string c,bool Upper)

		{
            string result=string.Empty; 
			byte[] array = new byte[2];

			array = System.Text.Encoding.Default.GetBytes(c);

			int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));

 

			//if ( i < 0xB0A1) return "";

			if (( i >= 0xB0A1)&&( i <= 0xB0C4) )
			{
				result="a";				 
			}
			else if (( i >= 0xB0C5)&&( i <= 0xB2C0) )
			{
				result="b";				 
			}
			else if (( i >= 0xB2C1)&&( i <= 0xB4ED) )
			{
				result="c";				 
			}
			else if (( i >= 0xB4EE)&&( i <= 0xB6E9) )
			{
				result="d";				 
			}			
			else if (( i >= 0xB6EA)&&( i <= 0xB7A1) )
			{
				result="e";				 
			}
			else if (( i >= 0xB7A2)&&( i <= 0xB8C0) )
			{
				result="f";				 
			}
			else if (( i >= 0xB8C1)&&( i <= 0xB9FD) )
			{
				result="g";				 
			}
			else if (( i >= 0xB9FE)&&( i <= 0xBBF6) )
			{
				result="h";				 
			}
			else if (( i >= 0xBBF7)&&( i <= 0xBFA5) )
			{
				result="j";				 
			}
			else if (( i >= 0xBFA6)&&( i <= 0xC0AB) )
			{
				result="k";				 
			}
			else if (( i >= 0xC0AC)&&( i <= 0xC2E7) )
			{
				result="l";				 
			}
			else if (( i >= 0xC2E8)&&( i <= 0xC4C2) )
			{
				result="m";				 
			}
			else if (( i >= 0xC4C3)&&( i <= 0xC5B5) )
			{
				result="n";				 
			}
			else if (( i >= 0xC5B6)&&( i <= 0xC5BD) )
			{
				result="o";				 
			}
			else if (( i >= 0xC5BE)&&( i <= 0xC6D9) )
			{
				result="p";				 
			}
			else if (( i >= 0xC6DA)&&( i <= 0xC8BA) )
			{
				result="q";				 
			}
			else if (( i >= 0xC8BB)&&( i <= 0xC8F5) )
			{
				result="r";				 
			}
			else if (( i >= 0xC8F6)&&( i <= 0xCBF9) )
			{
				result="s";				 
			}
			else if (( i >= 0xCBFA)&&( i <= 0xCDD9) )
			{
				result="t";				 
			}
			else if (( i >= 0xCDDA)&&( i <= 0xCEF3) )
			{
				result="w";				 
			}
			else if (( i >= 0xCEF4)&&( i <= 0xD1B8) )
			{
				result="x";				 
			}
			else if (( i >= 0xD1B9)&&( i <= 0xD4D0) )
			{
				result="y";				 
			}
			else if (( i >= 0xD4D1)&&( i <= 0xD7F9) )
			{
				result="z";				 
			}
			else
			{
               result=string.Empty;
			}

			
			if (Upper)
			{
               result=result.ToUpper();
			}
			return result;

		} 

		public static string CNameToGUIDString(string ACName)
		{
			ACName=ACName.Insert(21,"-").Insert(17,"-").Insert(13,"-").Insert(9,"-");
			ACName="{"+ACName+"}";
			return ACName;
		}

		public static string GUIDStringToCName(string AGUIDString)
		{
			AGUIDString=AGUIDString.Replace("{","").Replace("}","").Replace("-","");
			return AGUIDString;
		}

	}
}

------程沐喆原创

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值