JAVA程序:Chinese to Pinyin 【汉字转拼音】

简介:

简介

        有个专门用来将中文转换成汉语拼音的Java的开源库,当前的版本是pinyin4j-2.5.0。详见http://sourceforge.net/projects/pinyin4j/,可以到网站上下载最新的库。

        另外此jar在git,maven上都有,对应地址是:

        https://github.com/belerweb/pinyin4j

        http://search.maven.org/#search%7Cga%7C1%7Cpinyin

缺点

        不能区分汉字的多音字,比如重庆,重大,重字有两个音:zhong4,chong2,需要调用者自己判断是取哪一个,一般情况下取第一个。

使用示例

    maven引用依赖

                <dependency>
			<groupId>com.belerweb</groupId>
			<artifactId>pinyin4j</artifactId>
			<version>2.5.0</version>
		</dependency>
  代码示例 
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;

public class PinyinDemo {
	/**
	 * 将汉字转换为全拼
	 * 
	 * @param src
	 * @return String
	 */
	public static String getPinYin(String str) {
		HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
		// 默认小写
		outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		// 不显示拼音的声调
		outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		// outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);

		StringBuilder sb = new StringBuilder();
		try {
			for (char c : str.toCharArray()) {
				// 如果包含有中文标点除号,需要使用正则表达式
				if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
					// if (c > 128) {
					sb.append(PinyinHelper.toHanyuPinyinStringArray(c,
							outputFormat)[0]);
				} else {
					sb.append(Character.toString(c));
				}
			}
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
		}
		return sb.toString();
	}

	/**
	 * 提取每个汉字的首字母
	 * 
	 * @param str
	 * @return String
	 */
	public static String getPinYinFirstChar(String str) {
		StringBuilder sb = new StringBuilder();
		for (char c : str.toCharArray()) {
			String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
			if (pinyinArray != null) {
				sb.append(pinyinArray[0].charAt(0));
			} else {
				sb.append(c);
			}
		}
		return sb.toString();
	}


	/**
	 * 将汉字转 Unicode 码
	 * 
	 * @param cnStr
	 * @return String
	 */
	public static String toUnicode(String str) {
		StringBuilder sb = new StringBuilder();
		int len = str.length();
		for (int i = 0; i < len; i++) {
			// 将每个字符转换成ASCII码
			sb.append(Integer.toHexString(str.charAt(i) & 0xffff) + "\\u");
		}
		return sb.toString();
	}

	public static void main(String[] args) {
		String str = "JAVA Chinese characters to Pinyin 俄媒:美国无法说服中国跟随制裁俄罗斯";
		System.out.println(getPinYin(str));
		System.out.println(getPinYinFirstChar(str));
		System.out.println(toUnicode("中JAVA大"));
	}

}
目录
相关文章
|
2月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
3月前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
29天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
62 1
|
20天前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
35 0
|
2月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
119 2
|
2月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
151 1
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
64 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
49 5
|
3月前
|
Java 编译器 数据库连接
探索Java中的异常处理:提升程序的鲁棒性
【9月更文挑战第25天】在Java的世界里,异常是那些不请自来、令人头疼的“客人”。它们悄无声息地潜入我们的代码,一旦出现,便可能导致程序崩溃或行为异常。但是,如果能够妥善管理这些异常,我们就能将潜在的灾难转变为增强程序鲁棒性和用户体验的机会。本文将通过深入浅出的方式,带领读者理解Java异常处理的重要性,并提供实用的策略来优雅地处理这些意外情况。让我们一起学习如何在Java中捕捉、处理和预防异常,确保我们的程序即使在面对不可预见的错误时也能保持稳健运行。
|
2月前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
39 0