`

汉字转换成拼音的工具----pinyin4j

    博客分类:
  • java
 
阅读更多

 

   今天在无意中发现了pinyin4j这个强大的工具,它能帮助我们完成将汉字转换成拼音的工作,这给我们的开发带来了巨大的便利,意识到这一点,我果断的学习了。在开始记录我的学习成果前,我必须先感谢pinyin4j的作者Li Min
  
(作者详细信息不详),感谢你为开发者提供了这个工具。

    先来看看pinyin4j有什么功能吧。

 Pinyin4j是sourceforge.net上的一个开源项目,支持同一汉字有多个发音,还支持拼音的格式化输出,比如第几声之类的,同时支持简体中文、繁体中文转换为拼音。下面是其官方网址,其中提供了下载:http://pinyin4j.sourceforge.net/
  

     下面就是我的学习成果演示了,可能存在诸多错误,希望大家能不吝指正,帮助我进步。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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;
import net.sourceforge.pinyin4j.*;
                                                                                                                                                                                                                 
public class Chinese2Pinyin {
                                                                                                                                                                                                                 
    /**
     * @param args
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static void main(String[] args)
            throws BadHanyuPinyinOutputFormatCombination {
        // TODO Auto-generated method stub
                                                                                                                                                                                                                 
        Chinese chinese = new Chinese();
        String sentence = "自己选择的路,跪着也要走完";
        char word = '中';
                                                                                                                                                                                                                 
        // 不使用格式化
        String pinyins[] = chinese.getSingleWord(word);
        System.out.println("不使用格式化的单字测试:");
        for (String pinyin : pinyins) {
            System.out.println(pinyin);
        }
                                                                                                                                                                                                                 
        System.out.println("不使用格式化的语句测试:");
        String result = chinese.getSentence(sentence);
        System.out.println(result);
                                                                                                                                                                                                                 
        // 使用格式化
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
                                                                                                                                                                                                                 
        System.out.println("使用格式化的单字测试:");
        String pinyins2[] = chinese.getSingleWord(word, format);
        for (String pinyin : pinyins2) {
            System.out.println(pinyin);
        }
                                                                                                                                                                                                                 
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        System.out.println("使用格式化的语句测试:");
        String result2 = chinese.getSentence(sentence, format);
        System.out.println(result2);
    }
                                                                                                                                                                                                                 
}
                                                                                                                                                                                                                 
class Chinese {
    public Chinese() {
    }
                                                                                                                                                                                                                 
    // 测试单字,不使用格式化方式
    public String[] getSingleWord(char word) {
        return PinyinHelper.toHanyuPinyinStringArray(word);
    }
                                                                                                                                                                                                                 
    // 测试单字,使用格式化方式
    public String[] getSingleWord(char word, HanyuPinyinOutputFormat format)
            throws BadHanyuPinyinOutputFormatCombination {
        return PinyinHelper.toHanyuPinyinStringArray(word, format);
    }
                                                                                                                                                                                                                 
    // 测试语句,不使用格式方式
    public String getSentence(String sentence) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = sentence.length(); i < len; i++) {
            char ch = sentence.charAt(i);
            String[] temp = getSingleWord(ch);
            if (temp == null) {
                sb.append(ch + ' ');
            } else {
                sb.append(temp[0] + ' ');
            }
        }
        return sb.toString();
    }
                                                                                                                                                                                                                 
    // 测试语句,使用格式化方式
    public String getSentence(String sentence, HanyuPinyinOutputFormat format)
            throws BadHanyuPinyinOutputFormatCombination {
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = sentence.length(); i < len; i++) {
            char ch = sentence.charAt(i);
            String[] temp = getSingleWord(ch, format);
            if (temp == null) {
                sb.append(ch + ' ');
            } else {
                sb.append(temp[0] + ' ');
            }
        }
        return sb.toString();
    }
}

 

    测试结果如下:

    

    OK,上面是我做的简单的测试程序,在做程序的时候我想到一个问题,如何来判断文字在语句中的读音该是怎样的呢?我认为这是这个工具需要再添加的功能,如果有了这个功能,那么我们就可以很方便的将汉语文章用拼音注解,这也就为小孩子提供了更多的阅读物了。

 

 

package com.bq.action;

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;

public class PinyinMain {
	public static void main(String[] args) {
		System.out.println(stringToPinYin("大修包"));
	}

	public static String charToPinYin(char c) {
		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
		format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 设置大小写
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不输出音调
		format.setVCharType(HanyuPinyinVCharType.WITH_V); // 拼音中的u输出为v 例如lv

		try {
			// 返回汉字的拼音,如果为多音字则返回所有读音
			String[] result = PinyinHelper.toHanyuPinyinStringArray(c, format);
			if (result == null) {
				return null; // 如果传入的不是汉字,例如A,则返回数组为null
			} else {
				return result[0]; // 返回汉字的第一个读音
			}
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
			return null;
		}
	}

	public static String stringToPinYin(String str) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			if (charToPinYin(c) == null) {
				sb.append(c);
			} else {
				sb.append(charToPinYin(c));
			}
		}
		return sb.toString();

	}
}

 

分享到:
评论

相关推荐

    汉语转换成拼音的jar包pinyin4j-2.5.0版本

    `pinyin4j`库的核心功能是将汉字转换为汉语拼音。这个过程涉及到多个方面,包括识别多音字、处理声调以及提供不同的拼音输出格式。例如,对于汉字"好",`pinyin4j`可以输出"haο"(无声调形式)或"hǎo"(带声调形式...

    中文转拼音工具类,pinyin4j-2.5.0.jar 适用于地址人名

    《中文转拼音工具类——pinyin4j-2.5.0.jar 在处理地址与人名中的应用》 在处理中文数据时,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者国际化处理。这时,一个高效且准确的中文转拼音工具显得尤为重要...

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

    总的来说,pinyin4j-2.5.0.jar是一个强大且易用的Java库,它极大地简化了汉字与拼音之间的转换过程,是处理中文字符问题时不可或缺的工具。通过合理利用这个库,开发者可以更高效地实现各种基于拼音的业务逻辑,提升...

    pinyin4j-2.5.0.zip

    对于Java开发者来说,pinyin4j是一个不可或缺的工具包,它专门用于将汉字转换为拼音,从而解决了中文数据处理中的诸多问题。pinyin4j-2.5.0.zip这个压缩包便是这一强大工具的载体,包含了一切你需要的功能,以适应...

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    为此,Elasticsearch提供了多种分词器,其中elasticsearch-analysis-pinyin-7.4.0就是专门针对中文处理的拼音分词器,它将汉字转换为拼音,以提高中文搜索的准确性和便利性。 这个插件的核心功能在于将中文字符转化...

    汉字转拼音类(内含pinyin4j-2.5.0.jar)

    这个压缩包包含了一个预封装好的Java类,专门用于实现汉字到拼音的转换,并且依赖于pinyin4j库,版本号为2.5.0。 pinyin4j是一个开源的Java库,由Barry de Graaff 创建,主要用于处理汉字的拼音转换。它能够将汉字...

    pinyin4j-2.5.0.jar下载

    "pinyin4j-2.5.0.jar"就是这样一款高效且易用的工具,它专为Java和Kotlin设计,提供了强大的汉字转拼音功能。 pinyin4j是一款开源的Java库,由Barry De Zwart开发,其主要功能是将汉字转换为汉语拼音。这个库不仅...

    将简体中文和繁体中文转换拼音的jar包 pinyin4j-2.5.0.jar

    《使用pinyin4j库进行中文到拼音转换的详解》 在处理中文字符时,有时我们...通过简单调用其提供的API,开发者可以方便地处理汉字、词语乃至整个句子的拼音转换,无论是简体中文还是繁体中文,pinyin4j都能游刃有余。

    pinyin4j-2.5.0.jar

    《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...

    pinyin4j-2.5.0.jar 中文转化拼音,获取首字母

    《pinyin4j-2.5.0.jar:中文转换拼音与获取首字母的利器》 在处理中文数据时,有时我们需要将汉字转化为拼音,以便进行关键词检索、数据分析或者构建搜索引擎。这时,一个强大的工具库就能派上用场,那就是pinyin4j...

    pinyin4j-2.5.0

    3. **拼音分词**:对于含有多个汉字的字符串,`pinyin4j`可以将其拆分为一个个单独的汉字,并分别转换为拼音。这对于进行基于拼音的关键词提取或搜索很有帮助。 4. **首字母提取**:如果你只需要汉字的首字母,`...

    汉字转换成拼音实例--JS

    在JavaScript(JS)中,将汉字转换为拼音是一项常见的需求,尤其在文本处理、搜索优化或者国际化应用中。本实例将探讨如何利用JS实现这一功能,主要涉及以下几个知识点: 1. **Unicode 和 Pinyin** 汉字在计算机中...

    汉字转拼音java pinyin4j-2.5.0.jar

    总的来说,`pinyin4j-2.5.0.jar`是一个强大而易用的Java拼音工具,对于需要处理中文字符的应用来说,它是一个不可或缺的助手。通过理解和熟练运用这个库,开发者可以更高效地实现汉字与拼音之间的转换,提高程序的...

    汉字转拼音大小写全拼首字母pinyin4j-jar

    例如,在搜索引擎中,用户输入的关键词可能包含汉字,通过pinyin4j转换成拼音后,可以方便地与索引中的拼音数据进行匹配。 总结起来,pinyin4j-jar是一个强大的汉字转拼音工具,它提供了灵活的拼音输出格式设置,能...

    拼音分词 Pinyin4j+pinyinAnalyzer+lucene-analyzers

    标题中的“拼音分词 Pinyin4j+pinyinAnalyzer+lucene-analyzers”指的是这个压缩包包含的三个核心组件,它们都是在处理中文文本时非常重要的工具。Pinyin4j是一个Java库,主要用于将汉字转换为拼音,这对于进行基于...

    pinyin4J java拼音转换工具

    pinyin4J java拼音转换工具 java汉字转换拼音工具

    pinyin支持汉字转换拼音,汉字转换拼音缩写

    标题"pinyin支持汉字转换拼音,汉字转换拼音缩写"表明这是一个关于汉字到拼音转换的工具或库,同时它还具备将汉字转换为拼音缩写的功能。 汉字转换拼音的原理通常基于汉语拼音方案,这是中国国家标准,规定了每个...

    探索PinYin4j.jar将汉字转换为拼音的基本用法

    Pinyin4j是一个功能强悍的汉语拼音工具包,是sourceforge.net上的一个开源项目。 主要的功能有: - 支持同一汉字有多个发音 - 支持拼音的格式化输出,比如第几声之类的 - 支持简体中文、繁体中文转换为拼音

    pinyin4j-2.5.1.jar

    pinyin4j是一个专门用于Java平台的中文字符转拼音的开源库,它的版本为2.5.1,是开发者处理中文字符转换为拼音的重要工具。该库由net.sourceforge.pinyin4j包提供,包含了丰富的类和方法,能够帮助开发者方便地获取...

Global site tag (gtag.js) - Google Analytics