import java.io.UnsupportedEncodingException;
public class CharacterUtil {
// 存放国标一级汉字不同读音的起始区位码
private static final int[] secPosvalueList = { 1601, 1637, 1833, 2078,2274, 2302, 2433, 2594, 2787,
3106, 3212, 3472, 3635, 3722, 3730,3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 5600 };
// 存放国标一级汉字不同读音的起始区位码对应读音
private static final String[] firstLetter = { "A","B","C","D","E","F","G","H","J",
"K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z","0"};
public static String getFirstLetter(String str) throws UnsupportedEncodingException{
//特殊字符:_ & @
//数字 48-57
//字母 65-90 97-122
//汉字
//空格
if(null == str){
new UnsupportedEncodingException();
}
if(str.trim().length() == 0){
return firstLetter[firstLetter.length - 1];
}
String firstString = str.trim().substring(0, 1).toUpperCase();
try {
byte[] gbCode = firstString.getBytes("GBK");
if(gbCode[0] > 0){
if(gbCode[0] >= 65 && gbCode[0] <= 90){
return firstString;
}else{
return firstLetter[firstLetter.length - 1];
}
}
int code = ((gbCode[0] & 0xff) - 160 )*100 + (gbCode[1] & 0xff) - 160;
for(int i = 0; i < secPosvalueList.length - 1; i++){
if(code >= secPosvalueList[i] && code <=secPosvalueList[i + 1]){
return firstLetter[i];
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw e;
}
return firstLetter[firstLetter.length - 1];
}
public static String[] getLetterArray(){
return firstLetter;
}
public static void main(String args[]) throws UnsupportedEncodingException{
}
}
分享到:
相关推荐
一个获取汉字拼音首字母的java程序,简单有效。
获取字符串中的汉字拼音首字母(根据http://blog.csdn.net/iwebsms/archive/2004/09/28/119851.aspx修改) 可能代码比较臃肿,希望有朋友再帮忙改正 //返回给定字符串的首字母 private String IndexCode(String ...
C# 查找给定汉字的首拼音 类库 (附源码)
C语言程序设计-求一个给定字符串中的字母的个数.c
该类提供将指定汉字转化为拼音码、拼音首字母等一些相关方法; 如果给定的字符为非中文汉字将不执行转化,直接返回原字符;
java ,将汉字转换成拼音的操作工具类。很方便使用的。。。
java基础编程:统计出给定字符串的英文字母、空格、数字和其它字符的个数
二叉树的创建与遍历,给定一个前序的字母字符串,并把它们创建成一个二叉树,并且遍历输出它的中序和后序
对pinyin4j的封装,并且能够进行汉字和拼音已经ASCII码的转换
对26 个小写英文字母组成的升序字符串进行特殊的编码
给定的字母表A 由26 个小写英文字母组成A={a,b,…,z}。该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1 次。例如,a,b,ab,bc,xyz 等字符串都...
1.根据给定汉字值得到汉字拼音,五笔,笔顺,和笔画数 2.要所给定汉字的索引值得到汉字拼音,五笔,笔顺,和笔画数 3.可直接导入GB2312Helper.jar包使用,或修改代码实现更多功能 示例 public static void main(String ...
Avinit 使用名字首字母生成头像Avinit获取给定文本的第一个单词和最后一个单词的首字母,并从中生成一个SVG化身。 Avinit还可以生成数据链接,因此可以直接在URL中发送化身。 灵感来源: : 安装pip install avinit...
if exists(select * from sys.objects where name='GetUpper') drop function dbo.GetUpper go CREATE function GetUpper(@words varchar(16)) returns varchar(8000) as begin DECLARE @s VARCHAR(MAX)= @...
C语言带参宏替换计算给定年份的二月天数,供初学者参考
实验内容: ...给定一幅图象,输出其直方图; 通过对话框给定一个线性变换函数,实现图象的灰度拉伸; 实现对图象的均衡化。 实验检查: 读入任一幅图象,输出显示灰度拉伸的图象和均衡化后图象。
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行...
结合实例介绍了提升机运行过程中出现的速度给定故障,并从产生故障的现象着手,对速度给定故障原因进行分析,提出了解决提升机速度给定故障的方案和注意事项,对提升机的维护具有一定的参考价值。
给定时间段和开关比,类似脉宽调制功能,比如给定10秒,开关比是0.45,则开是4.5秒、关是5.5秒循环执行!和中断时间Sleep(Ts)的Ts有关!
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},...