- 浏览: 88729 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
851228082:
怎样控制字符的坐标?
验证码之SimpleCaptcha (一) -
宋健skipper:
新版本有问题啊 连struts.xml文件都没了 找不到log ...
小型用户权限例子struts2.18+spring3.0+hibernate3.5+annotation(源码) -
宋健skipper:
新下载的版本 ops.sql文件缺少了 use 'ops'; ...
小型用户权限例子struts2.18+spring3.0+hibernate3.5+annotation(源码) -
good_ovo:
很实用的一个框架,里面封装东西挺齐全的,多谢楼主共享
小型用户权限例子struts2.18+spring3.0+hibernate3.5+annotation(源码) -
玉无瑕:
非常好, 可以作基本信息管理的框架!
小型用户权限例子struts2.18+spring3.0+hibernate3.5+annotation(源码)
汉字转成拼音如果自己实现起来有点麻烦,主要是怕有些汉字转不了,所以就准备使用一个开源的工具Pinyin4j.
pinyin4j是一个支持将中文转换到拼音的Java开源类库,pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。pinyin4j的主页:http://pinyin4j.sourceforge.net/
1. 支持简体中文和繁体中文字符;
2. 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字;
3. 支持多音字,即可以获取一个中文字符的多种发音;
4. 支持多种字符串输出格式,比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。
为了方便大家使用,我将源文件和jar包一并放上来了,欢迎大家下载。
废话少说,下面是我建立的一个通用类,有什么不足的地方希望大家指正。
发现多音字解析还是浮云
stringToPinyin("厦和",true,"|") 这个方法可以转换成多音字
sha|xia men
发现多音字解析还是浮云
这个代码字典不全,而且不支持多音字,比如输入“靓”这个他就没法转成拼音
刚测试了一下,确实是有问题。问题的原因检查出来了。
在方法中:
找到
替换成
谢谢你的的测试。。
帖子里面已经修改。。
pinyin4j是一个支持将中文转换到拼音的Java开源类库,pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。pinyin4j的主页:http://pinyin4j.sourceforge.net/
1. 支持简体中文和繁体中文字符;
2. 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字;
3. 支持多音字,即可以获取一个中文字符的多种发音;
4. 支持多种字符串输出格式,比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。
为了方便大家使用,我将源文件和jar包一并放上来了,欢迎大家下载。
废话少说,下面是我建立的一个通用类,有什么不足的地方希望大家指正。
package com.xyj.com.tool.util; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * @className:PinyingUtil.java * @classDescription:拼音操作工具类 * @author:xiayingjie * @createTime:2010-10-21 */ public class PinyingUtil { /** * 将字符串转换成拼音数组 * * @param src * @return */ public static String[] stringToPinyin(String src) { return stringToPinyin(src, false, null); } /** * 将字符串转换成拼音数组 * * @param src * @return */ public static String[] stringToPinyin(String src,String separator) { return stringToPinyin(src, true, separator); } /** * 将字符串转换成拼音数组 * * @param src * @param isPolyphone * 是否查出多音字的所有拼音 * @param separator * 多音字拼音之间的分隔符 * @return */ public static String[] stringToPinyin(String src, boolean isPolyphone, String separator) { // 判断字符串是否为空 if ("".equals(src) || null == src) { return null; } char[] srcChar = src.toCharArray(); int srcCount = srcChar.length; String[] srcStr = new String[srcCount]; for (int i = 0; i < srcCount; i++) { srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator); } return srcStr; } /** * 将单个字符转换成拼音 * * @param src * @return */ public static String charToPinyin(char src, boolean isPolyphone, String separator) { // 创建汉语拼音处理类 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 输出设置,大小写,音标方式 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); StringBuffer tempPinying = new StringBuffer(); // 如果是中文 if (src > 128) { try { // 转换得出结果 String[] strs = PinyinHelper.toHanyuPinyinStringArray(src, defaultFormat); // 是否查出多音字,默认是查出多音字的第一个字符 if (isPolyphone && null != separator) { for (int i = 0; i < strs.length; i++) { tempPinying.append(strs[i]); if (strs.length != (i + 1)) { // 多音字之间用特殊符号间隔起来 tempPinying.append(separator); } } } else { tempPinying.append(strs[0]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { tempPinying.append(src); } return tempPinying.toString(); } public static String hanziToPinyin(String hanzi){ return hanziToPinyin(hanzi," "); } /** * 将汉字转换成拼音 * @param hanzi * @param separator * @return */ public static String hanziToPinyin(String hanzi,String separator){ // 创建汉语拼音处理类 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 输出设置,大小写,音标方式 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String pinyingStr=""; try { pinyingStr=PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat, separator); } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } return pinyingStr; } /** * 将字符串数组转换成字符串 * @param str * @param separator 各个字符串之间的分隔符 * @return */ public static String stringArrayToString(String[] str, String separator) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length; i++) { sb.append(str[i]); if (str.length != (i + 1)) { sb.append(separator); } } return sb.toString(); } /** * 简单的将各个字符数组之间连接起来 * @param str * @return */ public static String stringArrayToString(String[] str){ return stringArrayToString(str,""); } /** * 将字符数组转换成字符串 * @param str * @param separator 各个字符串之间的分隔符 * @return */ public static String charArrayToString(char[] ch, String separator) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < ch.length; i++) { sb.append(ch[i]); if (ch.length != (i + 1)) { sb.append(separator); } } return sb.toString(); } /** * 将字符数组转换成字符串 * @param str * @return */ public static String charArrayToString(char[] ch) { return charArrayToString(ch," "); } /** * 取汉字的首字母 * @param src * @param isCapital 是否是大写 * @return */ public static char[] getHeadByChar(char src,boolean isCapital){ //如果不是汉字直接返回 if (src <= 128) { return new char[]{src}; } //获取所有的拼音 String []pinyingStr=PinyinHelper.toHanyuPinyinStringArray(src); //创建返回对象 int polyphoneSize=pinyingStr.length; char [] headChars=new char[polyphoneSize]; int i=0; //截取首字符 for(String s:pinyingStr){ char headChar=s.charAt(0); //首字母是否大写,默认是小写 if(isCapital){ headChars[i]=Character.toUpperCase(headChar); }else{ headChars[i]=headChar; } i++; } return headChars; } /** * 取汉字的首字母(默认是大写) * @param src * @return */ public static char[] getHeadByChar(char src){ return getHeadByChar(src,true); } /** * 查找字符串首字母 * @param src * @return */ public static String[] getHeadByString(String src){ return getHeadByString( src, true); } /** * 查找字符串首字母 * @param src * @param isCapital 是否大写 * @return */ public static String[] getHeadByString(String src,boolean isCapital){ return getHeadByString( src, isCapital,null); } /** * 查找字符串首字母 * @param src * @param isCapital 是否大写 * @param separator 分隔符 * @return */ public static String[] getHeadByString(String src,boolean isCapital,String separator){ char[]chars=src.toCharArray(); String[] headString=new String[chars.length]; int i=0; for(char ch:chars){ char[]chs=getHeadByChar(ch,isCapital); StringBuffer sb=new StringBuffer(); if(null!=separator){ int j=1; for(char ch1:chs){ sb.append(ch1); if(j!=chs.length){ sb.append(separator); } j++; } }else{ sb.append(chs[0]); } headString[i]=sb.toString(); i++; } return headString; } public static void main(String[] args) { System.out.println(stringArrayToString(getHeadByString("我se 心"))); } }
- pinyin4j.rar (196.5 KB)
- 下载次数: 1776
评论
33 楼
Magician8421
2011-05-16
谢谢分享 正需要这个!!
32 楼
zfl110
2011-03-30
感谢分享,最近项目要用到拼音转化功能
31 楼
javageek123
2011-03-08
好东西啊。。。
30 楼
lf84730258
2011-03-08
挺不错的帖子,多音字的词汇量.是一个人测不出来吧,只能遇到了具体问题具体分析,你要那么智能源代码在这里有本事自己修改去,而且只要能识别绝大部分的中文转拼音.基本功能是够了.
29 楼
icefish518
2011-02-22
多音字不行啊!!
28 楼
jxdwinter
2011-01-15
多音字的问题困扰了我好久,我也使用过pinyin4j,可是不会多音字的使用方法~还需要多找找资料学习一下~
27 楼
512zw
2011-01-15
嵌套的层次太多,而且没有封装成独立的方法,还有写死的常量,那块代码很难维护啊
26 楼
long_lan
2011-01-15
<div class="quote_title">kettas 写道</div>
<div class="quote_div">能用在哪些文字中,一些特殊的汉字不知道能不能用。</div>
<p>
</p>
<table style="width: 296px; height: 44px;" border="1"><tbody>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</tbody></table>
<p> rrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss</p>
<div class="quote_div">能用在哪些文字中,一些特殊的汉字不知道能不能用。</div>
<p>
</p>
<table style="width: 296px; height: 44px;" border="1"><tbody>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</tbody></table>
<p> rrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss</p>
25 楼
sleepinglord
2011-01-14
请问如何解决多音字问题?
24 楼
xiaoxin5230
2010-12-31
那去哪里找那些词库呢?
23 楼
whzhaha
2010-12-31
还是需要词库和算法的,人工识别多音字就没啥意义了
22 楼
xiaoxin5230
2010-12-31
whzhaha 写道
发现多音字解析还是浮云
stringToPinyin("厦和",true,"|") 这个方法可以转换成多音字
System.out.println(stringArrayToString(stringToPinyin("厦门",true,"|")," "));
sha|xia men
21 楼
vision22
2010-12-31
在做模糊音检索时有用到pinyin4j
20 楼
whzhaha
2010-12-31
System.out.println(PinyinUtil.stringArrayToString(getHeadByString("杭州大厦需要解百"),"")); System.out.println(PinyinUtil.hanziToPinyin("杭州大厦需要解百","")); System.out.println(PinyinUtil.hanziToPinyin("浣纱路","")); System.out.println(PinyinUtil.hanziToPinyin("浣","")); System.out.println(PinyinUtil.stringArrayToString(getHeadByString("浣纱路"),"")); System.out.println(PinyinUtil.hanziToPinyin("我要去厦门","")); System.out.println(PinyinUtil.hanziToPinyin("解甲","")); 结果 HZDSXYJB hangzhoudashaxuyaojiebai huanshalu huan HSL woyaoqushamen jiejia
发现多音字解析还是浮云
19 楼
crystalujn
2010-12-31
谢谢lz分享,在国际化过程中用来得到key很方便!
18 楼
xiaoxin5230
2010-10-25
greatwqs 写道
在网上也看到了一篇帖子:
代码如下:
代码如下:
import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; public class HZ2PYTest { private static LinkedHashMap spellMap = null; static { if (spellMap == null) { spellMap = new LinkedHashMap(400); } initialize(); System.out.println("Chinese transfer Spell Done."); } private HZ2PYTest() { } @SuppressWarnings("unchecked") private static void spellPut(String spell, int ascii) { spellMap.put(spell, new Integer(ascii)); } private static void initialize() { spellPut("a", -20319); spellPut("ai", -20317); spellPut("an", -20304); spellPut("ang", -20295); spellPut("ao", -20292); spellPut("ba", -20283); spellPut("bai", -20265); spellPut("ban", -20257); spellPut("bang", -20242); spellPut("bao", -20230); spellPut("bei", -20051); spellPut("ben", -20036); spellPut("beng", -20032); spellPut("bi", -20026); spellPut("bian", -20002); spellPut("biao", -19990); spellPut("bie", -19986); spellPut("bin", -19982); spellPut("bing", -19976); spellPut("bo", -19805); spellPut("bu", -19784); spellPut("ca", -19775); spellPut("cai", -19774); spellPut("can", -19763); spellPut("cang", -19756); spellPut("cao", -19751); spellPut("ce", -19746); spellPut("ceng", -19741); spellPut("cha", -19739); spellPut("chai", -19728); spellPut("chan", -19725); spellPut("chang", -19715); spellPut("chao", -19540); spellPut("che", -19531); spellPut("chen", -19525); spellPut("cheng", -19515); spellPut("chi", -19500); spellPut("chong", -19484); spellPut("chou", -19479); spellPut("chu", -19467); spellPut("chuai", -19289); spellPut("chuan", -19288); spellPut("chuang", -19281); spellPut("chui", -19275); spellPut("chun", -19270); spellPut("chuo", -19263); spellPut("ci", -19261); spellPut("cong", -19249); spellPut("cou", -19243); spellPut("cu", -19242); spellPut("cuan", -19238); spellPut("cui", -19235); spellPut("cun", -19227); spellPut("cuo", -19224); spellPut("da", -19218); spellPut("dai", -19212); spellPut("dan", -19038); spellPut("dang", -19023); spellPut("dao", -19018); spellPut("de", -19006); spellPut("deng", -19003); spellPut("di", -18996); spellPut("dian", -18977); spellPut("diao", -18961); spellPut("die", -18952); spellPut("ding", -18783); spellPut("diu", -18774); spellPut("dong", -18773); spellPut("dou", -18763); spellPut("du", -18756); spellPut("duan", -18741); spellPut("dui", -18735); spellPut("dun", -18731); spellPut("duo", -18722); spellPut("e", -18710); spellPut("en", -18697); spellPut("er", -18696); spellPut("fa", -18526); spellPut("fan", -18518); spellPut("fang", -18501); spellPut("fei", -18490); spellPut("fen", -18478); spellPut("feng", -18463); spellPut("fo", -18448); spellPut("fou", -18447); spellPut("fu", -18446); spellPut("ga", -18239); spellPut("gai", -18237); spellPut("gan", -18231); spellPut("gang", -18220); spellPut("gao", -18211); spellPut("ge", -18201); spellPut("gei", -18184); spellPut("gen", -18183); spellPut("geng", -18181); spellPut("gong", -18012); spellPut("gou", -17997); spellPut("gu", -17988); spellPut("gua", -17970); spellPut("guai", -17964); spellPut("guan", -17961); spellPut("guang", -17950); spellPut("gui", -17947); spellPut("gun", -17931); spellPut("guo", -17928); spellPut("ha", -17922); spellPut("hai", -17759); spellPut("han", -17752); spellPut("hang", -17733); spellPut("hao", -17730); spellPut("he", -17721); spellPut("hei", -17703); spellPut("hen", -17701); spellPut("heng", -17697); spellPut("hong", -17692); spellPut("hou", -17683); spellPut("hu", -17676); spellPut("hua", -17496); spellPut("huai", -17487); spellPut("huan", -17482); spellPut("huang", -17468); spellPut("hui", -17454); spellPut("hun", -17433); spellPut("huo", -17427); spellPut("ji", -17417); spellPut("jia", -17202); spellPut("jian", -17185); spellPut("jiang", -16983); spellPut("jiao", -16970); spellPut("jie", -16942); spellPut("jin", -16915); spellPut("jing", -16733); spellPut("jiong", -16708); spellPut("jiu", -16706); spellPut("ju", -16689); spellPut("juan", -16664); spellPut("jue", -16657); spellPut("jun", -16647); spellPut("ka", -16474); spellPut("kai", -16470); spellPut("kan", -16465); spellPut("kang", -16459); spellPut("kao", -16452); spellPut("ke", -16448); spellPut("ken", -16433); spellPut("keng", -16429); spellPut("kong", -16427); spellPut("kou", -16423); spellPut("ku", -16419); spellPut("kua", -16412); spellPut("kuai", -16407); spellPut("kuan", -16403); spellPut("kuang", -16401); spellPut("kui", -16393); spellPut("kun", -16220); spellPut("kuo", -16216); spellPut("la", -16212); spellPut("lai", -16205); spellPut("lan", -16202); spellPut("lang", -16187); spellPut("lao", -16180); spellPut("le", -16171); spellPut("lei", -16169); spellPut("leng", -16158); spellPut("li", -16155); spellPut("lia", -15959); spellPut("lian", -15958); spellPut("liang", -15944); spellPut("liao", -15933); spellPut("lie", -15920); spellPut("lin", -15915); spellPut("ling", -15903); spellPut("liu", -15889); spellPut("long", -15878); spellPut("lou", -15707); spellPut("lu", -15701); spellPut("lv", -15681); spellPut("luan", -15667); spellPut("lue", -15661); spellPut("lun", -15659); spellPut("luo", -15652); spellPut("ma", -15640); spellPut("mai", -15631); spellPut("man", -15625); spellPut("mang", -15454); spellPut("mao", -15448); spellPut("me", -15436); spellPut("mei", -15435); spellPut("men", -15419); spellPut("meng", -15416); spellPut("mi", -15408); spellPut("mian", -15394); spellPut("miao", -15385); spellPut("mie", -15377); spellPut("min", -15375); spellPut("ming", -15369); spellPut("miu", -15363); spellPut("mo", -15362); spellPut("mou", -15183); spellPut("mu", -15180); spellPut("na", -15165); spellPut("nai", -15158); spellPut("nan", -15153); spellPut("nang", -15150); spellPut("nao", -15149); spellPut("ne", -15144); spellPut("nei", -15143); spellPut("nen", -15141); spellPut("neng", -15140); spellPut("ni", -15139); spellPut("nian", -15128); spellPut("niang", -15121); spellPut("niao", -15119); spellPut("nie", -15117); spellPut("nin", -15110); spellPut("ning", -15109); spellPut("niu", -14941); spellPut("nong", -14937); spellPut("nu", -14933); spellPut("nv", -14930); spellPut("nuan", -14929); spellPut("nue", -14928); spellPut("nuo", -14926); spellPut("o", -14922); spellPut("ou", -14921); spellPut("pa", -14914); spellPut("pai", -14908); spellPut("pan", -14902); spellPut("pang", -14894); spellPut("pao", -14889); spellPut("pei", -14882); spellPut("pen", -14873); spellPut("peng", -14871); spellPut("pi", -14857); spellPut("pian", -14678); spellPut("piao", -14674); spellPut("pie", -14670); spellPut("pin", -14668); spellPut("ping", -14663); spellPut("po", -14654); spellPut("pu", -14645); spellPut("qi", -14630); spellPut("qia", -14594); spellPut("qian", -14429); spellPut("qiang", -14407); spellPut("qiao", -14399); spellPut("qie", -14384); spellPut("qin", -14379); spellPut("qing", -14368); spellPut("qiong", -14355); spellPut("qiu", -14353); spellPut("qu", -14345); spellPut("quan", -14170); spellPut("que", -14159); spellPut("qun", -14151); spellPut("ran", -14149); spellPut("rang", -14145); spellPut("rao", -14140); spellPut("re", -14137); spellPut("ren", -14135); spellPut("reng", -14125); spellPut("ri", -14123); spellPut("rong", -14122); spellPut("rou", -14112); spellPut("ru", -14109); spellPut("ruan", -14099); spellPut("rui", -14097); spellPut("run", -14094); spellPut("ruo", -14092); spellPut("sa", -14090); spellPut("sai", -14087); spellPut("san", -14083); spellPut("sang", -13917); spellPut("sao", -13914); spellPut("se", -13910); spellPut("sen", -13907); spellPut("seng", -13906); spellPut("sha", -13905); spellPut("shai", -13896); spellPut("shan", -13894); spellPut("shang", -13878); spellPut("shao", -13870); spellPut("she", -13859); spellPut("shen", -13847); spellPut("sheng", -13831); spellPut("shi", -13658); spellPut("shou", -13611); spellPut("shu", -13601); spellPut("shua", -13406); spellPut("shuai", -13404); spellPut("shuan", -13400); spellPut("shuang", -13398); spellPut("shui", -13395); spellPut("shun", -13391); spellPut("shuo", -13387); spellPut("si", -13383); spellPut("song", -13367); spellPut("sou", -13359); spellPut("su", -13356); spellPut("suan", -13343); spellPut("sui", -13340); spellPut("sun", -13329); spellPut("suo", -13326); spellPut("ta", -13318); spellPut("tai", -13147); spellPut("tan", -13138); spellPut("tang", -13120); spellPut("tao", -13107); spellPut("te", -13096); spellPut("teng", -13095); spellPut("ti", -13091); spellPut("tian", -13076); spellPut("tiao", -13068); spellPut("tie", -13063); spellPut("ting", -13060); spellPut("tong", -12888); spellPut("tou", -12875); spellPut("tu", -12871); spellPut("tuan", -12860); spellPut("tui", -12858); spellPut("tun", -12852); spellPut("tuo", -12849); spellPut("wa", -12838); spellPut("wai", -12831); spellPut("wan", -12829); spellPut("wang", -12812); spellPut("wei", -12802); spellPut("wen", -12607); spellPut("weng", -12597); spellPut("wo", -12594); spellPut("wu", -12585); spellPut("xi", -12556); spellPut("xia", -12359); spellPut("xian", -12346); spellPut("xiang", -12320); spellPut("xiao", -12300); spellPut("xie", -12120); spellPut("xin", -12099); spellPut("xing", -12089); spellPut("xiong", -12074); spellPut("xiu", -12067); spellPut("xu", -12058); spellPut("xuan", -12039); spellPut("xue", -11867); spellPut("xun", -11861); spellPut("ya", -11847); spellPut("yan", -11831); spellPut("yang", -11798); spellPut("yao", -11781); spellPut("ye", -11604); spellPut("yi", -11589); spellPut("yin", -11536); spellPut("ying", -11358); spellPut("yo", -11340); spellPut("yong", -11339); spellPut("you", -11324); spellPut("yu", -11303); spellPut("yuan", -11097); spellPut("yue", -11077); spellPut("yun", -11067); spellPut("za", -11055); spellPut("zai", -11052); spellPut("zan", -11045); spellPut("zang", -11041); spellPut("zao", -11038); spellPut("ze", -11024); spellPut("zei", -11020); spellPut("zen", -11019); spellPut("zeng", -11018); spellPut("zha", -11014); spellPut("zhai", -10838); spellPut("zhan", -10832); spellPut("zhang", -10815); spellPut("zhao", -10800); spellPut("zhe", -10790); spellPut("zhen", -10780); spellPut("zheng", -10764); spellPut("zhi", -10587); spellPut("zhong", -10544); spellPut("zhou", -10533); spellPut("zhu", -10519); spellPut("zhua", -10331); spellPut("zhuai", -10329); spellPut("zhuan", -10328); spellPut("zhuang", -10322); spellPut("zhui", -10315); spellPut("zhun", -10309); spellPut("zhuo", -10307); spellPut("zi", -10296); spellPut("zong", -10281); spellPut("zou", -10274); spellPut("zu", -10270); spellPut("zuan", -10262); spellPut("zui", -10260); spellPut("zun", -10256); spellPut("zuo", -10254); } /** * 获得单个汉字的Ascii. * * @param cn * char 汉字字符 * @return int 错误返回 0,否则返回ascii */ public static int getCnAscii(char cn) { byte[] bytes = (String.valueOf(cn)).getBytes(); if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误 return 0; } if (bytes.length == 1) { // 英文字符 return bytes[0]; } if (bytes.length == 2) { // 中文字符 int hightByte = 256 + bytes[0]; int lowByte = 256 + bytes[1]; int ascii = (256 * hightByte + lowByte) - 256 * 256; // System.out.println("ASCII=" + ascii); return ascii; } return 0; // 错误 } /** * 根据ASCII码到SpellMap中查找对应的拼音 * * @param ascii * int 字符对应的ASCII * @return String 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符, * * 否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音. */ public static String getSpellByAscii(int ascii) { if (ascii > 0 && ascii < 160) { // 单字符 return String.valueOf((char) ascii); } if (ascii < -20319 || ascii > -10247) { // 不知道的字符 return null; } Set keySet = spellMap.keySet(); Iterator it = keySet.iterator(); String spell0 = null; String spell = null; int asciiRang0 = -20319; int asciiRang; while (it.hasNext()) { spell = (String) it.next(); Object valObj = spellMap.get(spell); if (valObj instanceof Integer) { asciiRang = ((Integer) valObj).intValue(); if (ascii >= asciiRang0 && ascii < asciiRang) { // 区间找到 return (spell0 == null) ? spell : spell0; } else { spell0 = spell; asciiRang0 = asciiRang; } } } return null; } /** * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串 */ public static String getFullSpell(String cnStr) { if (null == cnStr || "".equals(cnStr.trim())) { return cnStr; } char[] chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); for (int i = 0, Len = chars.length; i < Len; i++) { int ascii = getCnAscii(chars[i]); if (ascii == 0) { // 取ascii时出错 retuBuf.append(chars); } else { String spell = getSpellByAscii(ascii); if (spell == null) { retuBuf.append(chars); } else { retuBuf.append(spell); } // end of if spell == null } // end of if ascii <= -20400 } // end of for return retuBuf.toString(); } /** * 返回字符串的拼音的首字母,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串的首字母 */ public static String getFirstSpell(String cnStr) { if (cnStr.substring(0, 1).equals("沣")) return "f"; if (cnStr.substring(0, 1).equals("骊")) return "l"; if (cnStr.substring(0, 1).equals("杈")) return "c"; if (cnStr.substring(0, 1).equals("阿")) return "e"; if (cnStr.substring(0, 1).equals("怡")) return "y"; if (cnStr.substring(0, 1).equals("灞")) return "b"; else return getFullSpell(cnStr).substring(0, 1); } /** * 返回字符串的拼音的首字母的关键码值,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串的首字母的关键码值 这儿的关键码设为从0到26的数字 */ public static int getKey(String str) { return +getFirstSpell(str).charAt(0) - 97; } public static void main(String[] args) { String s = "不-进-行-转-换-心"; System.out.println(getFirstSpell(s)); System.out.println(getFullSpell(s)); } }
这个代码字典不全,而且不支持多音字,比如输入“靓”这个他就没法转成拼音
17 楼
pengzhoushuo
2010-10-25
在je上多次看到关于pinyin4j的介绍,粗略看了下,问得最多或者说担忧最多的就是比较生僻的汉字能不能转换的问题。忍不住出来说两声,程序员应该多研究这些开源代码的实现机制!
pinyin4j在转换汉字的时候很简单,就是比对法,只是它将汉字与拼音的mapping写在了配置文件了,你可以打开里面的多个.xml文件,依照它的格式添加你自己想支持的生僻汉字。
pinyin4j在转换汉字的时候很简单,就是比对法,只是它将汉字与拼音的mapping写在了配置文件了,你可以打开里面的多个.xml文件,依照它的格式添加你自己想支持的生僻汉字。
16 楼
greatwqs
2010-10-25
在网上也看到了一篇帖子:
代码如下:
代码如下:
import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; public class HZ2PYTest { private static LinkedHashMap spellMap = null; static { if (spellMap == null) { spellMap = new LinkedHashMap(400); } initialize(); System.out.println("Chinese transfer Spell Done."); } private HZ2PYTest() { } @SuppressWarnings("unchecked") private static void spellPut(String spell, int ascii) { spellMap.put(spell, new Integer(ascii)); } private static void initialize() { spellPut("a", -20319); spellPut("ai", -20317); spellPut("an", -20304); spellPut("ang", -20295); spellPut("ao", -20292); spellPut("ba", -20283); spellPut("bai", -20265); spellPut("ban", -20257); spellPut("bang", -20242); spellPut("bao", -20230); spellPut("bei", -20051); spellPut("ben", -20036); spellPut("beng", -20032); spellPut("bi", -20026); spellPut("bian", -20002); spellPut("biao", -19990); spellPut("bie", -19986); spellPut("bin", -19982); spellPut("bing", -19976); spellPut("bo", -19805); spellPut("bu", -19784); spellPut("ca", -19775); spellPut("cai", -19774); spellPut("can", -19763); spellPut("cang", -19756); spellPut("cao", -19751); spellPut("ce", -19746); spellPut("ceng", -19741); spellPut("cha", -19739); spellPut("chai", -19728); spellPut("chan", -19725); spellPut("chang", -19715); spellPut("chao", -19540); spellPut("che", -19531); spellPut("chen", -19525); spellPut("cheng", -19515); spellPut("chi", -19500); spellPut("chong", -19484); spellPut("chou", -19479); spellPut("chu", -19467); spellPut("chuai", -19289); spellPut("chuan", -19288); spellPut("chuang", -19281); spellPut("chui", -19275); spellPut("chun", -19270); spellPut("chuo", -19263); spellPut("ci", -19261); spellPut("cong", -19249); spellPut("cou", -19243); spellPut("cu", -19242); spellPut("cuan", -19238); spellPut("cui", -19235); spellPut("cun", -19227); spellPut("cuo", -19224); spellPut("da", -19218); spellPut("dai", -19212); spellPut("dan", -19038); spellPut("dang", -19023); spellPut("dao", -19018); spellPut("de", -19006); spellPut("deng", -19003); spellPut("di", -18996); spellPut("dian", -18977); spellPut("diao", -18961); spellPut("die", -18952); spellPut("ding", -18783); spellPut("diu", -18774); spellPut("dong", -18773); spellPut("dou", -18763); spellPut("du", -18756); spellPut("duan", -18741); spellPut("dui", -18735); spellPut("dun", -18731); spellPut("duo", -18722); spellPut("e", -18710); spellPut("en", -18697); spellPut("er", -18696); spellPut("fa", -18526); spellPut("fan", -18518); spellPut("fang", -18501); spellPut("fei", -18490); spellPut("fen", -18478); spellPut("feng", -18463); spellPut("fo", -18448); spellPut("fou", -18447); spellPut("fu", -18446); spellPut("ga", -18239); spellPut("gai", -18237); spellPut("gan", -18231); spellPut("gang", -18220); spellPut("gao", -18211); spellPut("ge", -18201); spellPut("gei", -18184); spellPut("gen", -18183); spellPut("geng", -18181); spellPut("gong", -18012); spellPut("gou", -17997); spellPut("gu", -17988); spellPut("gua", -17970); spellPut("guai", -17964); spellPut("guan", -17961); spellPut("guang", -17950); spellPut("gui", -17947); spellPut("gun", -17931); spellPut("guo", -17928); spellPut("ha", -17922); spellPut("hai", -17759); spellPut("han", -17752); spellPut("hang", -17733); spellPut("hao", -17730); spellPut("he", -17721); spellPut("hei", -17703); spellPut("hen", -17701); spellPut("heng", -17697); spellPut("hong", -17692); spellPut("hou", -17683); spellPut("hu", -17676); spellPut("hua", -17496); spellPut("huai", -17487); spellPut("huan", -17482); spellPut("huang", -17468); spellPut("hui", -17454); spellPut("hun", -17433); spellPut("huo", -17427); spellPut("ji", -17417); spellPut("jia", -17202); spellPut("jian", -17185); spellPut("jiang", -16983); spellPut("jiao", -16970); spellPut("jie", -16942); spellPut("jin", -16915); spellPut("jing", -16733); spellPut("jiong", -16708); spellPut("jiu", -16706); spellPut("ju", -16689); spellPut("juan", -16664); spellPut("jue", -16657); spellPut("jun", -16647); spellPut("ka", -16474); spellPut("kai", -16470); spellPut("kan", -16465); spellPut("kang", -16459); spellPut("kao", -16452); spellPut("ke", -16448); spellPut("ken", -16433); spellPut("keng", -16429); spellPut("kong", -16427); spellPut("kou", -16423); spellPut("ku", -16419); spellPut("kua", -16412); spellPut("kuai", -16407); spellPut("kuan", -16403); spellPut("kuang", -16401); spellPut("kui", -16393); spellPut("kun", -16220); spellPut("kuo", -16216); spellPut("la", -16212); spellPut("lai", -16205); spellPut("lan", -16202); spellPut("lang", -16187); spellPut("lao", -16180); spellPut("le", -16171); spellPut("lei", -16169); spellPut("leng", -16158); spellPut("li", -16155); spellPut("lia", -15959); spellPut("lian", -15958); spellPut("liang", -15944); spellPut("liao", -15933); spellPut("lie", -15920); spellPut("lin", -15915); spellPut("ling", -15903); spellPut("liu", -15889); spellPut("long", -15878); spellPut("lou", -15707); spellPut("lu", -15701); spellPut("lv", -15681); spellPut("luan", -15667); spellPut("lue", -15661); spellPut("lun", -15659); spellPut("luo", -15652); spellPut("ma", -15640); spellPut("mai", -15631); spellPut("man", -15625); spellPut("mang", -15454); spellPut("mao", -15448); spellPut("me", -15436); spellPut("mei", -15435); spellPut("men", -15419); spellPut("meng", -15416); spellPut("mi", -15408); spellPut("mian", -15394); spellPut("miao", -15385); spellPut("mie", -15377); spellPut("min", -15375); spellPut("ming", -15369); spellPut("miu", -15363); spellPut("mo", -15362); spellPut("mou", -15183); spellPut("mu", -15180); spellPut("na", -15165); spellPut("nai", -15158); spellPut("nan", -15153); spellPut("nang", -15150); spellPut("nao", -15149); spellPut("ne", -15144); spellPut("nei", -15143); spellPut("nen", -15141); spellPut("neng", -15140); spellPut("ni", -15139); spellPut("nian", -15128); spellPut("niang", -15121); spellPut("niao", -15119); spellPut("nie", -15117); spellPut("nin", -15110); spellPut("ning", -15109); spellPut("niu", -14941); spellPut("nong", -14937); spellPut("nu", -14933); spellPut("nv", -14930); spellPut("nuan", -14929); spellPut("nue", -14928); spellPut("nuo", -14926); spellPut("o", -14922); spellPut("ou", -14921); spellPut("pa", -14914); spellPut("pai", -14908); spellPut("pan", -14902); spellPut("pang", -14894); spellPut("pao", -14889); spellPut("pei", -14882); spellPut("pen", -14873); spellPut("peng", -14871); spellPut("pi", -14857); spellPut("pian", -14678); spellPut("piao", -14674); spellPut("pie", -14670); spellPut("pin", -14668); spellPut("ping", -14663); spellPut("po", -14654); spellPut("pu", -14645); spellPut("qi", -14630); spellPut("qia", -14594); spellPut("qian", -14429); spellPut("qiang", -14407); spellPut("qiao", -14399); spellPut("qie", -14384); spellPut("qin", -14379); spellPut("qing", -14368); spellPut("qiong", -14355); spellPut("qiu", -14353); spellPut("qu", -14345); spellPut("quan", -14170); spellPut("que", -14159); spellPut("qun", -14151); spellPut("ran", -14149); spellPut("rang", -14145); spellPut("rao", -14140); spellPut("re", -14137); spellPut("ren", -14135); spellPut("reng", -14125); spellPut("ri", -14123); spellPut("rong", -14122); spellPut("rou", -14112); spellPut("ru", -14109); spellPut("ruan", -14099); spellPut("rui", -14097); spellPut("run", -14094); spellPut("ruo", -14092); spellPut("sa", -14090); spellPut("sai", -14087); spellPut("san", -14083); spellPut("sang", -13917); spellPut("sao", -13914); spellPut("se", -13910); spellPut("sen", -13907); spellPut("seng", -13906); spellPut("sha", -13905); spellPut("shai", -13896); spellPut("shan", -13894); spellPut("shang", -13878); spellPut("shao", -13870); spellPut("she", -13859); spellPut("shen", -13847); spellPut("sheng", -13831); spellPut("shi", -13658); spellPut("shou", -13611); spellPut("shu", -13601); spellPut("shua", -13406); spellPut("shuai", -13404); spellPut("shuan", -13400); spellPut("shuang", -13398); spellPut("shui", -13395); spellPut("shun", -13391); spellPut("shuo", -13387); spellPut("si", -13383); spellPut("song", -13367); spellPut("sou", -13359); spellPut("su", -13356); spellPut("suan", -13343); spellPut("sui", -13340); spellPut("sun", -13329); spellPut("suo", -13326); spellPut("ta", -13318); spellPut("tai", -13147); spellPut("tan", -13138); spellPut("tang", -13120); spellPut("tao", -13107); spellPut("te", -13096); spellPut("teng", -13095); spellPut("ti", -13091); spellPut("tian", -13076); spellPut("tiao", -13068); spellPut("tie", -13063); spellPut("ting", -13060); spellPut("tong", -12888); spellPut("tou", -12875); spellPut("tu", -12871); spellPut("tuan", -12860); spellPut("tui", -12858); spellPut("tun", -12852); spellPut("tuo", -12849); spellPut("wa", -12838); spellPut("wai", -12831); spellPut("wan", -12829); spellPut("wang", -12812); spellPut("wei", -12802); spellPut("wen", -12607); spellPut("weng", -12597); spellPut("wo", -12594); spellPut("wu", -12585); spellPut("xi", -12556); spellPut("xia", -12359); spellPut("xian", -12346); spellPut("xiang", -12320); spellPut("xiao", -12300); spellPut("xie", -12120); spellPut("xin", -12099); spellPut("xing", -12089); spellPut("xiong", -12074); spellPut("xiu", -12067); spellPut("xu", -12058); spellPut("xuan", -12039); spellPut("xue", -11867); spellPut("xun", -11861); spellPut("ya", -11847); spellPut("yan", -11831); spellPut("yang", -11798); spellPut("yao", -11781); spellPut("ye", -11604); spellPut("yi", -11589); spellPut("yin", -11536); spellPut("ying", -11358); spellPut("yo", -11340); spellPut("yong", -11339); spellPut("you", -11324); spellPut("yu", -11303); spellPut("yuan", -11097); spellPut("yue", -11077); spellPut("yun", -11067); spellPut("za", -11055); spellPut("zai", -11052); spellPut("zan", -11045); spellPut("zang", -11041); spellPut("zao", -11038); spellPut("ze", -11024); spellPut("zei", -11020); spellPut("zen", -11019); spellPut("zeng", -11018); spellPut("zha", -11014); spellPut("zhai", -10838); spellPut("zhan", -10832); spellPut("zhang", -10815); spellPut("zhao", -10800); spellPut("zhe", -10790); spellPut("zhen", -10780); spellPut("zheng", -10764); spellPut("zhi", -10587); spellPut("zhong", -10544); spellPut("zhou", -10533); spellPut("zhu", -10519); spellPut("zhua", -10331); spellPut("zhuai", -10329); spellPut("zhuan", -10328); spellPut("zhuang", -10322); spellPut("zhui", -10315); spellPut("zhun", -10309); spellPut("zhuo", -10307); spellPut("zi", -10296); spellPut("zong", -10281); spellPut("zou", -10274); spellPut("zu", -10270); spellPut("zuan", -10262); spellPut("zui", -10260); spellPut("zun", -10256); spellPut("zuo", -10254); } /** * 获得单个汉字的Ascii. * * @param cn * char 汉字字符 * @return int 错误返回 0,否则返回ascii */ public static int getCnAscii(char cn) { byte[] bytes = (String.valueOf(cn)).getBytes(); if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误 return 0; } if (bytes.length == 1) { // 英文字符 return bytes[0]; } if (bytes.length == 2) { // 中文字符 int hightByte = 256 + bytes[0]; int lowByte = 256 + bytes[1]; int ascii = (256 * hightByte + lowByte) - 256 * 256; // System.out.println("ASCII=" + ascii); return ascii; } return 0; // 错误 } /** * 根据ASCII码到SpellMap中查找对应的拼音 * * @param ascii * int 字符对应的ASCII * @return String 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符, * * 否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音. */ public static String getSpellByAscii(int ascii) { if (ascii > 0 && ascii < 160) { // 单字符 return String.valueOf((char) ascii); } if (ascii < -20319 || ascii > -10247) { // 不知道的字符 return null; } Set keySet = spellMap.keySet(); Iterator it = keySet.iterator(); String spell0 = null; String spell = null; int asciiRang0 = -20319; int asciiRang; while (it.hasNext()) { spell = (String) it.next(); Object valObj = spellMap.get(spell); if (valObj instanceof Integer) { asciiRang = ((Integer) valObj).intValue(); if (ascii >= asciiRang0 && ascii < asciiRang) { // 区间找到 return (spell0 == null) ? spell : spell0; } else { spell0 = spell; asciiRang0 = asciiRang; } } } return null; } /** * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串 */ public static String getFullSpell(String cnStr) { if (null == cnStr || "".equals(cnStr.trim())) { return cnStr; } char[] chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); for (int i = 0, Len = chars.length; i < Len; i++) { int ascii = getCnAscii(chars[i]); if (ascii == 0) { // 取ascii时出错 retuBuf.append(chars); } else { String spell = getSpellByAscii(ascii); if (spell == null) { retuBuf.append(chars); } else { retuBuf.append(spell); } // end of if spell == null } // end of if ascii <= -20400 } // end of for return retuBuf.toString(); } /** * 返回字符串的拼音的首字母,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串的首字母 */ public static String getFirstSpell(String cnStr) { if (cnStr.substring(0, 1).equals("沣")) return "f"; if (cnStr.substring(0, 1).equals("骊")) return "l"; if (cnStr.substring(0, 1).equals("杈")) return "c"; if (cnStr.substring(0, 1).equals("阿")) return "e"; if (cnStr.substring(0, 1).equals("怡")) return "y"; if (cnStr.substring(0, 1).equals("灞")) return "b"; else return getFullSpell(cnStr).substring(0, 1); } /** * 返回字符串的拼音的首字母的关键码值,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * String 字符串 * @return String 转换成全拼后的字符串的首字母的关键码值 这儿的关键码设为从0到26的数字 */ public static int getKey(String str) { return +getFirstSpell(str).charAt(0) - 97; } public static void main(String[] args) { String s = "不-进-行-转-换-心"; System.out.println(getFirstSpell(s)); System.out.println(getFullSpell(s)); } }
15 楼
ops2000
2010-10-23
非常好的东西,正好有2个项目要用到。谢谢。
不知道这玩意的实现原理是什么,不知道是否方便略作说明。
不知道这玩意的实现原理是什么,不知道是否方便略作说明。
14 楼
xiaoxin5230
2010-10-23
yhfghj 写道
有问题啊
public static void main(String[] args) {
System.out.println(stringArrayToString(getHeadByString("我的心肝")));
}
运行的结果是 WDSG
X 和 S 分错了,我用的是 pinyin4j-2.5.0.zip 包,不是这个版本有问题吧!
public static void main(String[] args) {
System.out.println(stringArrayToString(getHeadByString("我的心肝")));
}
运行的结果是 WDSG
X 和 S 分错了,我用的是 pinyin4j-2.5.0.zip 包,不是这个版本有问题吧!
刚测试了一下,确实是有问题。问题的原因检查出来了。
在方法中:
public static char[] getHeadByChar(char src,boolean isCapital)
找到
//获取所有的拼音 String []pinyingStr=PinyinHelper.toYalePinyinStringArray(src);
替换成
//获取所有的拼音 String []pinyingStr=PinyinHelper.toHanyuPinyinStringArray(src);
谢谢你的的测试。。
帖子里面已经修改。。
发表评论
-
模板之freemarker
2012-02-23 10:01 2303FreeMarker是一个模板引擎,一个基于模板生成文 ... -
报表之fusionchart
2011-01-13 22:27 3548java做web报表主要分为三类,一种在服务器生成 ... -
小型用户权限例子struts2.18+spring3.0+hibernate3.5+annotation(源码)
2010-12-31 15:08 7590今天是2010年的最后一天,在此分享一下个人几个月前 ... -
缓存之EHcache
2010-12-01 19:25 2582EhCache 是一个纯Java的进程内缓存框架,具有快速、精 ... -
java之图片处理
2010-11-17 18:26 3571package com.xyj.com.tool.util; ... -
Excel之POI
2010-11-05 13:03 5573java操作Excel最常用的开源组件有poi与jxl。jxl ... -
xml之dom4j
2010-10-27 20:31 1923Dom4j是一个易用的、开源的库,用于XML,XPath和XS ... -
验证码之SimpleCaptcha (二)
2010-10-21 00:07 5451上回说到了简单的使用simpleCaptcha,这 ... -
验证码之SimpleCaptcha (一)
2010-10-20 23:46 3623在captcha中,两个比较著名的框架验证码有Jca ... -
CAS(2)
2010-08-12 15:45 2325C ... -
CAS学习
2010-07-10 15:13 3201CAS学习 ...
相关推荐
总之,"汉语转拼音之pinyin4j 通用类" 是Java开发中处理汉字到拼音转换的一个强大工具,它提供了丰富的功能,易于集成,并能适应各种复杂的中文处理需求。无论是初学者还是经验丰富的开发者,都可以从中受益,提高...
总结来说,pinyin4j是一个强大的汉字转拼音工具,它简化了Java程序员处理汉字拼音的需求。配合Sparta库,可以更全面地解决中文字符的处理问题。在开发过程中,合理利用这些库,可以提高代码的可读性和维护性,同时...
`pinyin4j-2.5.0.jar`是一个专门为Java设计的库,专门用于将汉字转换为拼音,且支持声调标记,极大地提高了处理效率和准确性。在这个库的帮助下,开发者无需关心复杂的汉字到拼音的映射规则,只需简单调用API即可...
《汉字转拼音:pinyin4j的简化版详解》 在中文信息处理领域,将汉字转化为拼音是一项基础且重要的任务,广泛应用于搜索引擎、输入法、语音识别等多个场景。pinyin4j是一个广受欢迎的Java库,它提供了高效、便捷的...
`pinyin4j`库的使用并不复杂,但它的功能强大,可以满足大部分汉语转拼音的需求。在处理大量汉字文本时,`pinyin4j`的高效性能和准确度使得它成为Java开发者的首选工具。无论是进行文本分析,还是创建具有拼音功能的...
《汉字转拼音:pinyin4j-jar工具详解》 在信息技术领域,处理中文字符时,经常需要将汉字转换为拼音,以便进行各种文本处理任务,如搜索、语音合成等。pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文...
《pinyin4j-2.5.0.jar:Java实现汉字转拼音的高效工具》 在信息化时代,处理中文字符成为许多开发者的必备技能。在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、...
"汉字转拼音类(内含pinyin4j-2.5.0.jar)" 提供了一个方便的解决方案。这个压缩包包含了一个预封装好的Java类,专门用于实现汉字到拼音的转换,并且依赖于pinyin4j库,版本号为2.5.0。 pinyin4j是一个开源的Java库...
《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...
《Pinyin4j:汉字拼音处理的利器》 在信息技术高速发展的今天,中文与英文的交互日益频繁,尤其是在编程和数据分析领域,将汉字转化为拼音的需求日益凸显。Pinyin4j便是一个专门解决这一问题的强大工具,它是一个...
完整的汉字转拼音代码,可以转多种类型,转全拼音或者转第一个字为全拼音,后面取首字母和Jar包
《pinyin4j:汉字转拼音的利器》 在处理汉字到拼音转换的场景中,pinyin4j是一个不可或缺的工具。它是一个Java库,专为处理汉字转换为拼音而设计,尤其适用于需要进行中文信息处理、搜索引擎优化、或者任何需要汉字...
`pinyin4j`是一个强大的Java库,专门用于将汉字转换为对应的汉语拼音。这个`pinyin4j-2.5.0`包提供了全面的API,使得开发人员可以方便地在Java应用程序中实现这一功能。 `pinyin4j`库由Barry DeZeng开发,它的主要...
总之,pinyin4j作为一款强大的Java库,为处理汉字拼音问题提供了高效且灵活的解决方案。无论是简单的汉字转换还是复杂的多音字处理,它都能游刃有余,为开发者的工作带来了极大的便利。掌握并合理利用pinyin4j,可以...
总的来说,"java拼音搜索pinyin4j"这个项目结合了Java Web开发的基础知识和汉字拼音处理的专业工具,通过Servlet三层架构实现了一个高效的中文搜索功能。开发者可以在这个基础上进一步扩展,如增加拼音排序、语音...
pinyin4j库的核心功能在于将汉字转换为其对应的汉语拼音,包括声母、韵母、声调等信息。这个库不仅支持基本的汉字转拼音,还能处理多音字、异体字等问题,对于开发者来说,提供了方便快捷的API接口,大大简化了开发...
在IT行业中,尤其是在Java和Android开发领域,有时候我们需要将汉字转换为对应的拼音,以便进行文本处理、搜索引擎优化或语音合成等任务。...在项目中集成`pinyin4j`,可以大大简化处理汉字拼音的工作,提高开发效率。
1. **汉字转拼音**:pinyin4j可以将单个汉字或字符串中的所有汉字转化为对应的拼音。它支持多种输出格式,如全拼、简拼、声母、韵母等。此外,它还能处理多音字,根据上下文提供最合适的读音。 2. **声调处理**:...
java安卓android汉字转拼音中文转拼音pinyin4j简化精简版. 网上流传的有180KB,太大了,对于android开发来说。我精简了很多无关内容,收录常用汉字大约2万个,完全够用了,还专门写了一个helper类,直接调用这个...
pinyin4j 是一个专门为Java开发的开源库,其主要功能是将中文字符转换为对应的汉语拼音。在处理中文数据时,尤其是在进行文本检索、语音合成或者数据分析等场景下,这个库非常实用。pinyin4j 能够帮助开发者快速地将...