C#获取汉字首字母代码
在一次项目中需要用到获取汉字首字母的功能,于是在网上找了很多代码,发现大部分均采用(if...else...)方式的写法;由于我个人要在项目中使用,故做了些调整,但原理是一样的,直接上代码(备个人做记录,呵呵):
using System;
using System.Collections.Generic;
using System.Linq;
public class FirstCharHelper
{
static List<FirstChar> _charList = new List<FirstChar>() {
new FirstChar(){FChar="A",Start=45217,End=45252},
new FirstChar(){FChar="B",Start=45253,End=45760},
new FirstChar(){FChar="C",Start=45761,End=46317},
new FirstChar(){FChar="D",Start=46318,End=46825},
new FirstChar(){FChar="E",Start=46826,End=47009},
new FirstChar(){FChar="F",Start=47010,End=47296},
new FirstChar(){FChar="G",Start=47297,End=47613},
new FirstChar(){FChar="H",Start=47614,End=48118},
new FirstChar(){FChar="J",Start=48119,End=49061},
new FirstChar(){FChar="K",Start=49062,End=49323},
new FirstChar(){FChar="L",Start=49324,End=49895},
new FirstChar(){FChar="M",Start=49896,End=50370},
new FirstChar(){FChar="N",Start=50371,End=50613},
new FirstChar(){FChar="O",Start=50614,End=50621},
new FirstChar(){FChar="P",Start=50622,End=50905},
new FirstChar(){FChar="Q",Start=50906,End=51386},
new FirstChar(){FChar="R",Start=51387,End=51445},
new FirstChar(){FChar="S",Start=51446,End=52217},
new FirstChar(){FChar="T",Start=52218,End=52697},
new FirstChar(){FChar="W",Start=52698,End=52979},
new FirstChar(){FChar="X",Start=52980,End=53640},
new FirstChar(){FChar="Y",Start=53689,End=54480},
new FirstChar(){FChar="Z",Start=54481,End=55289}
};
public static string GetFirstCharCode(string str)
{
long iCnChar;
byte[] ZW = System.Text.Encoding.Default.GetBytes(str);
string result = string.Empty;
//如果是字母,则直接返回
if (ZW.Length == 1)
{
result = str.ToUpper();
}
else
{
int i1 = (short)(ZW[0]);
int i2 = (short)(ZW[1]);
iCnChar = i1 * 256 + i2;
var m = _charList.Where(x => x.Start <= iCnChar && x.End >= iCnChar).FirstOrDefault();
if (m != null)
result = m.FChar;
}
return result;
}
private class FirstChar
{
public string FChar { get; set; }
public long Start { get; set; }
public long End { get; set; }
}
///调用
string result=FirstCharHelper.GetFirstCharCode("博");
浙公网安备 33010602011771号