`
xcy13638760
  • 浏览: 52724 次
社区版块
存档分类
最新评论

java开源类库pinyin4j的使用

 
阅读更多
最近CMS系统为了增加查询的匹配率,需要增加拼音检索字段,在网上找到了pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字),呵呵,看了看他的demo,决定就用它了,因为我在实际使用的时候,需要考虑多音字的不同排列组合,下面的代码就是支持多音字的.

pinyin4j官方网址:http://pinyin4j.sourceforge.net/

Java代码收藏代码
  1. importjava.util.HashSet;
  2. importjava.util.Set;
  3. importnet.sourceforge.pinyin4j.PinyinHelper;
  4. importnet.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  5. importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  6. importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  7. importnet.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
  8. importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  9. publicclasspinyin4j{
  10. /**
  11. *字符串集合转换字符串(逗号分隔)
  12. *@authorwyh
  13. *@paramstringSet
  14. *@return
  15. */
  16. publicstaticStringmakeStringByStringSet(Set<String>stringSet){
  17. StringBuilderstr=newStringBuilder();
  18. inti=0;
  19. for(Strings:stringSet){
  20. if(i==stringSet.size()-1){
  21. str.append(s);
  22. }else{
  23. str.append(s+",");
  24. }
  25. i++;
  26. }
  27. returnstr.toString().toLowerCase();
  28. }
  29. /**
  30. *获取拼音集合
  31. *@authorwyh
  32. *@paramsrc
  33. *@returnSet<String>
  34. */
  35. publicstaticSet<String>getPinyin(Stringsrc){
  36. if(src!=null&&!src.trim().equalsIgnoreCase("")){
  37. char[]srcChar;
  38. srcChar=src.toCharArray();
  39. //汉语拼音格式输出类
  40. HanyuPinyinOutputFormathanYuPinOutputFormat=newHanyuPinyinOutputFormat();
  41. //输出设置,大小写,音标方式等
  42. hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  43. hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE)
  44. hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
  45. String[][]temp=newString[src.length()][];
  46. for(inti=0;i<srcChar.length;i++){
  47. charc=srcChar[i];
  48. //是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)
  49. if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){
  50. try{
  51. temp[i]=PinyinHelper.toHanyuPinyinStringArray(srcChar[i],hanYuPinOutputFormat);
  52. }catch(BadHanyuPinyinOutputFormatCombinatione){
  53. e.printStackTrace();
  54. }
  55. }elseif(((int)c>=65&&(int)c<=90)||((int)c>=97&&(int)c<=122)){
  56. temp[i]=newString[]{String.valueOf(srcChar[i])};
  57. }else{
  58. temp[i]=newString[]{""};
  59. }
  60. }
  61. String[]pingyinArray=Exchange(temp);
  62. Set<String>pinyinSet=newHashSet<String>();
  63. for(inti=0;i<pingyinArray.length;i++){
  64. pinyinSet.add(pingyinArray[i]);
  65. }
  66. returnpinyinSet;
  67. }
  68. returnnull;
  69. }
  70. /**
  71. *递归
  72. *@authorwyh
  73. *@paramstrJaggedArray
  74. *@return
  75. */
  76. publicstaticString[]Exchange(String[][]strJaggedArray){
  77. String[][]temp=DoExchange(strJaggedArray);
  78. returntemp[0];
  79. }
  80. /**
  81. *递归
  82. *@authorwyh
  83. *@paramstrJaggedArray
  84. *@return
  85. */
  86. privatestaticString[][]DoExchange(String[][]strJaggedArray){
  87. intlen=strJaggedArray.length;
  88. if(len>=2){
  89. intlen1=strJaggedArray[0].length;
  90. intlen2=strJaggedArray[1].length;
  91. intnewlen=len1*len2;
  92. String[]temp=newString[newlen];
  93. intIndex=0;
  94. for(inti=0;i<len1;i++){
  95. for(intj=0;j<len2;j++){
  96. temp[Index]=strJaggedArray[0][i]+strJaggedArray[1][j];
  97. Index++;
  98. }
  99. }
  100. String[][]newArray=newString[len-1][];
  101. for(inti=2;i<len;i++){
  102. newArray[i-1]=strJaggedArray[i];
  103. }
  104. newArray[0]=temp;
  105. returnDoExchange(newArray);
  106. }else{
  107. returnstrJaggedArray;
  108. }
  109. }
  110. /**
  111. *@paramargs
  112. */
  113. publicstaticvoidmain(String[]args){
  114. Stringstr="单田芳";
  115. System.out.println(makeStringByStringSet(getPinyin(str)));
  116. }
  117. }

控制台输出:dantianfang,shantianfang,chantianfang
分享到:
评论

相关推荐

    一个汉字转拼音的Java开源类库-JPinyin

    JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。 【JPinyin主要特性】 1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体...

    pinyin4j-2.5.0.jar 下载 java汉字转拼音 jar包 附带超级简单小dome

    pinyin4j是一个开源的Java库,由Barry de Graaff创建,它的主要功能是提供汉字到拼音的转换服务。在pinyin4j-2.5.0.jar这个版本中,包含了完整的类库和必要的资源文件,开发者可以将其添加到Java项目中,快速实现...

    jpinyin.jar

    JPinyin是一个汉字转拼音的Java开源类库 在PinYin4j的功能基础上做了一些改进 github地址https: github com stuxuhai jpinyin 使用方法: String str &quot;你好世界&quot;; PinyinHelper convertToPinyinString ...

    利用Java开源库把汉字转拼音

    pinyin4j是一个支持将中文转换到拼音的Java开源类库。 支持简体中文和繁体中文字符; 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字; 支持多音字,即可以获取一...

    java开源包6

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包10

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包8

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包9

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    Java汉字转拼音pinyin4j用法详解

    pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库。它支持同一汉字有多个发音,还支持拼音的格式化输出,比如第几声之类的,同时支持简体中文、繁体中文转换为拼音。使用起来也非常简单。 二、目录...

    java开源包4

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包101

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包5

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包3

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包2

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包11

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包7

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    C#汉字转拼音

    Pinyin4j.Net是从Codeplex备份的资源,是一个专门为.NET平台设计的汉字转拼音库,它基于Java版的Pinyin4j进行了移植。 Pinyin4j.Net库包含了多个关键组件,例如: 1. Net.Sourceforge.Pinyin4j:这是核心的拼音...

    jpinyin-1.1.8-javadoc.jar

    JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。主要特性: 1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不...

    java拼音解析.zip

    使用`pinyin4j`库首先需要将其导入到Java项目中,可以通过Maven或Gradle等构建工具添加依赖,或者直接将`pinyin4j-2.5.0.jar`作为项目的类库。然后,可以创建`HanyuPinyinOutputFormat`对象来设置拼音输出的格式,...

Global site tag (gtag.js) - Google Analytics