- 浏览: 395835 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (285)
- test (0)
- 分类 (1)
- java (281)
- tttttttttttt (1)
- android程序复制数据库 (1)
- Hibernate 动态 HQL (1)
- java编写扑克的洗牌程序 (1)
- NIO 之 选择就绪模式 (1)
- wpo另类问题:不可轻视的蜘蛛爬行对服务器造成的负担 (1)
- haml (1)
- cvcvcvc (1)
- 开源史上最成功的8个开源产品 (1)
- XML文件转换成Word文件或者Excel文件 (1)
- 一些利用开源浏览器核心开发专用浏览器的连接 (1)
- 毛笔效果简单思路 (1)
- 年终考评以后 (1)
- RFC821 简单邮件传输协议(SMTP)中文定义文档 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- 极限编程(XP)的重构与设计模式 (1)
- MapInfo2005年第三期电子新闻 (1)
- 想到目前各BLOG站点和搜索引擎的一点点缺陷 (1)
- 成功通过DB2的700和701考试 (1)
- 基于记录登陆信息的防止网页暴力破解方法 (1)
- Router路由 (1)
- 终于稍微完整的学习了一下Linux (1)
- android手机通讯录备份还原代码 (1)
- Qt之美(一):d指针/p指针详解 (1)
- DB2 静默安装 (1)
- linux开机启动脚本的顺序 (1)
- Hibernate实体对象的三种状态 (1)
- Hibernate面向对象的hql语句 (1)
- ibatIS调用存储过程 (1)
- Linux启动过程(详细说明) (1)
- C3P0配置 (1)
- memcache安装 (1)
- js event.keyCode (1)
- java获取汉子首字母 (1)
- Eclipse GC log (1)
- java轻量级httpserver (1)
最新评论
-
smilea001:
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
java获取汉子首字母 -
smilea001:
我输入的也是--
java获取汉子首字母 -
di1984HIT:
写的不错啊。
Router路由 -
kaixinyou:
...
2011.07.20——— android 获得当前view在屏幕的坐标 -
zhengjianbo:
你好,可以将你的实现代码公布下吗!万分感谢!
毛笔效果简单思路
public class StringUtil {
//private static Log logger = LogFactory.getLog(StringUtil.class);
//国标码和区位码转换常量
static final int GB_SP_DEFF = 160;
//存放国标一级汉字不同读音的起始区位码
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
};
//存放国标一级汉字不同读音的起始区位码对应读音
static final char[] firstLetter = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'w', 'x', 'y', 'z'};
//获取一个字符串的拼音码
public static String getFirstLetter(String oriStr) {
String str = oriStr.toLowerCase();
StringBuffer buffer = new StringBuffer();
char ch;
char[] temp;
for (int i = 0; i < str.length(); i++) { //依次处理str中每个字符
ch = str.charAt(i);
temp = new char[] {ch};
byte[] uniCode = new String(temp).getBytes();
if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
buffer.append(temp);
} else {
buffer.append(convert(uniCode));
}
}
return buffer.toString();
}
/** 获取一个汉字的拼音首字母。
* GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码
* 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43
* 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’
*/
static char convert(byte[] bytes) {
char result = '-';
int secPosValue = 0;
int i;
for( i =0; i < bytes.length; i++) {
bytes[i] -= GB_SP_DEFF;
}
secPosValue = bytes[0] * 100 + bytes[1];
for ( i = 0; i<23; i++) {
if(secPosValue >= secPosvalueList[i] && secPosValue <secPosvalueList[i+1]) {
result = firstLetter[i];
break;
}
}
return result;
}
public static void main(String[] args) {
System.out.println(StringUtil.getFirstLetter("白金"));
}
}
评论
3 楼
smilea001
2013-11-05
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
2 楼
smilea001
2013-11-05
我输入的也是--
1 楼
rolenz
2012-02-07
if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
if(secPosValue >= secPosvalueList[i] && secPosValue <secPosvalueList[i+1]) {
这两行中&&应该是&&吧。
随便试了几个中文字,输出结果都是--
System.out.println(StringUtil.getFirstLetter("白金"));
输出结果:--
if(secPosValue >= secPosvalueList[i] && secPosValue <secPosvalueList[i+1]) {
这两行中&&应该是&&吧。
随便试了几个中文字,输出结果都是--
System.out.println(StringUtil.getFirstLetter("白金"));
输出结果:--
发表评论
-
java轻量级httpserver
2012-02-08 11:48 1615httpclient+httpserver demo ... -
Eclipse GC log
2012-02-04 16:59 1457为了查看Eclipse GC log,需要在eclip ... -
js event.keyCode
2012-02-03 09:09 1240<span style="" ... -
memcache安装
2012-02-02 12:04 1193? <blockquote> 1. ... -
C3P0配置
2012-02-02 11:34 1016cquireIncrement[3] ... -
Linux启动过程(详细说明)
2012-02-01 09:09 1611<div class="post ... -
ibatIS调用存储过程
2012-01-31 15:38 1635<p>一、ibatIS调用存储过程(调用存 ... -
Hibernate面向对象的hql语句
2012-01-11 13:14 1026Hibernate中hql条件语句的书写方式有: ? ... -
Hibernate实体对象的三种状态
2012-01-11 12:59 1303<p style="text- ... -
linux开机启动脚本的顺序
2011-12-21 15:14 1153下开机自动启动脚本所涉及的知识和方法、如下: ... -
DB2 静默安装
2011-12-21 11:59 1087<span style="color: ... -
Qt之美(一):d指针/p指针详解
2011-12-20 15:14 2028[/b]2011.11.16 [size=18px;] ... -
android手机通讯录备份还原代码
2011-12-20 11:54 2975<span style="font-f ... -
终于稍微完整的学习了一下Linux
2011-12-19 12:14 1200Linux以前也装过两次,不过几乎没去用。头几天看一些 ... -
Router路由
2011-12-19 10:54 1210Router路由:设定线的轨迹,在Connection ... -
基于记录登陆信息的防止网页暴力破解方法
2011-12-17 10:49 1457对黑客方面比较感兴趣的或者是比较熟悉的,应该知道溯雪这 ... -
成功通过DB2的700和701考试
2011-12-16 17:27 889嘿嘿,原以为比较没有信心的701考试也被俺成功的攻克了 ... -
想到目前各BLOG站点和搜索引擎的一点点缺陷
2011-12-15 15:54 902感觉无聊,就到中国博客网的首页逛了逛,想看看有没有什么 ... -
MapInfo2005年第三期电子新闻
2011-12-15 10:49 936<span lang="EN-US&q ... -
极限编程(XP)的重构与设计模式
2011-12-14 20:58 1488</span></span>& ...
相关推荐
Java获取汉字的首字母是一项常见的文本处理任务,尤其在数据编码、搜索引擎优化或者拼音排序等场景下非常有用。本文将详细讲解如何利用Java实现这一功能,并探讨相关知识点。 首先,我们要明白汉字首字母的获取主要...
有时候可能会有获取中文拼音这样的需求...但如果仅仅是想获取中文拼音的首字母,查询数据库可能就显得过于臃肿了,通过重新思考之后,我们会利用汉字编码顺利来解决这样的一个问题。这里将这种方式的java实现分享给大家
获取GBK字的拼音的首字母 由于数据较大,完整的GBK编码表按GBK规范分成3部分 GBK/2为与GB2312兼容的国标汉字部分,GBK/3和GBK/4为扩展汉字部分 每一部分都有自己的地址计算公式 若输入是acsii则返回同样的acsii ...
通过这个VC++小程序,开发者可以获得处理汉字到拼音首字母的基础,为进一步的文本处理和数据分析任务打下基础。同时,这也是学习汉字拼音转换技术的一个良好起点,特别是对于那些对C++编程和中文信息处理感兴趣的...
在"java获取汉子拼音"的压缩包文件中,很可能包含了更多关于如何使用pinyin4j进行汉字拼音转换的示例代码。通过学习和理解这些示例,你可以更好地掌握这个库,并在实际项目中灵活应用。 总结起来,Java名字获取拼音...
System.out.println("汉字: " + c + ", 首字母: " + pinyinArray[0].charAt(0) + ", 全拼: " + pinyinArray[0]); } } } } ``` - 这段代码会输出“汉字”的每个字符的拼音首字母和全拼。 3. **汉字转拼音的...
- 提供两个静态方法`getFirstLettersUp()`和`getFirstLettersLo()`分别用于获取大写和小写的拼音首字母。 #### 5. 异常处理 - 当设置的拼音输出格式组合不合理时,会抛出`BadHanyuPinyinOutputFormatCombination`...
此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr` 和 `nuToTrueAsciiStr`,我们将探讨其实现原理及其应用场景。 #### 核心知识点详解 ##### 1. 字符编码基础...
然后可以使用Java的`Collections.sort()`方法,提供自定义比较器(Comparator)来根据拼音首字母进行排序。 4. **显示A-Z分组**:为了展示A-Z分组,可以创建一个额外的ArrayList来存储每个字母及其对应的元素列表。...
会用到的工具类 MD5加密、定时任务、分页、获取ip地址、汉子首字母全拼、获取指定路径文件列表、日期、生成随机名字、微信消息加密等 持续更新中...
对于繁体字的拼音排序,可能需要引入第三方库,如`pinyin4j`,来获取汉字的准确拼音并进行比较。 总结来说,Java中的`Collator`类为我们提供了方便的中文字符串排序功能,但对于繁体字或特定的排序需求,可能需要...
不过要注意,由于Pinyin4J是基于Java的,因此在Android上使用时可能需要处理一些兼容性问题,比如避免使用Java 8以上的新特性。在实际项目中,还应考虑性能优化,比如缓存已转换的拼音,避免重复计算。
在Java编程语言中,处理汉字转化为全拼或拼音首字母是一项常见的需求,特别是在文本处理、搜索引擎优化(SEO)以及中文信息处理等领域。本篇将详细讲解如何实现这一功能,主要涉及以下几个知识点: 1. **汉字编码与...
我们可以创建一个HashMap来存储每个分段的起始位置,然后遍历排序后的联系人列表,根据首字母添加到对应分段。 ```java HashMap, Integer> sectionMap = new HashMap(); for (int i = 0; i (); i++) { cursor....