`
thtwin
  • 浏览: 160592 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

pinyin4j将中文转换拼音简单强大

阅读更多
一个强大的中文转换拼音的开源组件。

package com.unutrip.remoting.ws;

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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
*
* pinyin4j使用
*
* @author longgangbai
*
*/
public class CNSpell {
public static HanyuPinyinToneType[] toneTypes = new HanyuPinyinToneType[] {
   HanyuPinyinToneType.WITH_TONE_NUMBER,
   HanyuPinyinToneType.WITHOUT_TONE,
   HanyuPinyinToneType.WITH_TONE_MARK };
public static HanyuPinyinVCharType[] vCharTypes = new HanyuPinyinVCharType[] {
   HanyuPinyinVCharType.WITH_U_AND_COLON, HanyuPinyinVCharType.WITH_V,
   HanyuPinyinVCharType.WITH_U_UNICODE };
public static HanyuPinyinCaseType[] caseTypes = new HanyuPinyinCaseType[] {
   HanyuPinyinCaseType.LOWERCASE, HanyuPinyinCaseType.UPPERCASE };

/**
  * 将中文字符转换为相应的数组
  *
  * @param chineseCharacter
  * @param toneSelection
  * @param vcharSelection
  * @param caseSelection
  */
private static void updateFormattedText(String chineseCharacter,
   HanyuPinyinToneType toneSelection,
   HanyuPinyinVCharType vcharSelection,
   HanyuPinyinCaseType caseSelection) {
  // 拼音格式化对象
  HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
  // 设置中文声调
  if (toneSelection != null) {
   if (toneTypes[0] == toneSelection) {
    outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
   } else if (toneTypes[1] == toneSelection) {
    outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
   } else if (toneTypes[2] == toneSelection) {
    outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
   }
  }
  // 设置特殊拼音的转换
  if (vcharSelection != null) {
   if (vCharTypes[0] == vcharSelection) {
    outputFormat
      .setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
   } else if (vCharTypes[1] == vcharSelection) {
    outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
   } else if (vCharTypes[2] == vcharSelection) {
    outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
   }
  }
  // 设置转换的拼音的大小写
  if (caseSelection != null) {
   if (caseTypes[0] == caseSelection) {
    outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
   } else if (caseTypes[1] == caseSelection) {
    outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
   }
  }
  // 获取字符串
  char[] cnStr = chineseCharacter.toCharArray();
  for (char chineseChar : cnStr) {
   // 将字符转换为拼音数组
   String[] pinyinArray = null;
   try {
    pinyinArray = PinyinHelper.toHanyuPinyinStringArray(
      chineseChar, outputFormat);
   } catch (BadHanyuPinyinOutputFormatCombination e1) {
    e1.printStackTrace();
   }
   String outputString = concatPinyinStringArray(pinyinArray);
   System.out.println(outputString);
  }

}

/**
  * 测试中文转换拼音方法
  *
  * @param args
  */
public static void main(String[] args) {
  updateFormattedText("我是中国人!", HanyuPinyinToneType.WITH_TONE_MARK,
    HanyuPinyinVCharType.WITH_U_UNICODE,
    HanyuPinyinCaseType.UPPERCASE);
}

/**
  * 将转换的拼音数组转换为字符串
  *
  * @param pinyinArray
  * @return
  */
private static String concatPinyinStringArray(String[] pinyinArray) {
  StringBuffer pinyinStrBuf = new StringBuffer();

  if ((null != pinyinArray) && (pinyinArray.length > 0)) {
   for (int i = 0; i < pinyinArray.length; i++) {
    pinyinStrBuf.append(pinyinArray[i]);
    pinyinStrBuf.append(System.getProperty("line.separator"));
   }
  }
  String outputString = pinyinStrBuf.toString();
  return outputString;
}
}
分享到:
评论

相关推荐

    pinyin4j工具类和jar包

    Pinyin4j的基本用法 1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便...+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载: http://pinyin4j.sourceforge.net/

    pinyin4j-2.5.0.jar.zip

    pinyin4j-2.5.0.jar,使用来处理中文转换成拼音(汉语拼音,罗马拼音等),功能强大。

    汉字转拼音pinyin4j-2.5.0.jar

    简单实用,功能强大的拼音和汉字互转的工具,还可以选择是否使用音调等等

    pinyin4j的使用手册

    inyin4j就是为了解决汉字转拼音问题的。它是sourceforge.net上的一个开源项目...+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载: http://pinyin4j.sourceforge.net/

    pinyin4j-2.5.0(jb51.net)

    时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常...+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载:

    Pnyin4j-2.5.0(汉语转拼音)

    强大的Pinyin4j.jar包轻松帮你实现汉字转换为拼音的功能,可以打造出类似钉钉中取昵称后两位汉字作为昵称的UI效果,满足你开发需求,如果你通过上面的英文官网,没有找到下载路径,请下载该资源,内含有源码解析文档...

    Pnyin4j-2.5.0.jar(汉语转拼音)

    强大的Pinyin4j.jar包轻松帮你实现汉字转换为拼音的功能,可以打造出类似钉钉中取昵称后两位汉字作为昵称的UI效果,满足你开发需求,如果你通过上面的英文官网,没有找到下载路径,请下载该资源,内含有源码解析文档...

    中文转拼音

    有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,...+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载:

    android搜索字母列表

    通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现在转换拼音常见的有pinyin4j和tinypinyin, pinyin4j的功能强大,包含声调多音字,tinypinyin执行快占用内存少, 如果只是简单匹配通讯录,建议使用tinypinyin,用法也很...

    android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)

    通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现在转换拼音常见的有pinyin4j和tinypinyin, pinyin4j的功能强大,包含声调多音字,tinypinyin执行快占用内存少, 如果只是简单匹配通讯录,建议使用tinypinyin,用法也很...

    java开源包4

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    JAVA上百实例源码以及开源项目源代码

    将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...

    java开源包1

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包11

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包2

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包3

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包6

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包5

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包10

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

    java开源包8

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient ...

Global site tag (gtag.js) - Google Analytics