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

Java拼音转换一例

    博客分类:
  • JAVA
 
阅读更多

      工作中有时碰到将中文名转换成首字母拼音书写。以前工作电脑故障,资料尽失,这里补充回一点,

参考网站:http://pinyin4j.sourceforge.net/,当前版本: pinyin4j 2.5.0

关键是知道有这么个开源jar包可以使用,没有什么特别的,使用起来很简单,代码中使用一点小算法。

 

package com.pinying.demo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import net.sourceforge.pinyin4j.PinyinHelper;

/**
 * Chinese character convert to Pinyin(include tongying character combine), return String Array
 * Description: Previously documented, computer failure, all data is lost, now slowly accumulated
 * @author zhaoxiaobo Dennis Email: zxbxiaobo@sina.com
 * @createdTime:2012-11-27
 */
public class PinyinDemo {

    private static Set<String> set = new HashSet<String>(0);
    private static int NUMNER = 0;
    private static String CHINESE_CHAR = "给予你长久的力量";//test data
//    private static String CHINESE_CHAR = "黄长恩";//test data
//    private static String CHINESE_CHAR = "赵晓波";//test data
//    private static String CHINESE_CHAR = "胡胜利";//test data
//    private static String CHINESE_CHAR = "张三丰";//test data

    static {
        NUMNER = CHINESE_CHAR.length();
    }

    public static void main(String[] args) {
//        List<List<String>> lists = new ArrayList<List<String>>(0);
//        List<String> list = new ArrayList<String>(0);
//        list.add("a");
//        list.add("b");
//        lists.add(list);
//        List<String> list1 = new ArrayList<String>(0);
//        list1.add("c");
//        list1.add("d");
//        lists.add(list1);
//        List<String> list2 = new ArrayList<String>(0);
//        list2.add("e");
//        list2.add("f");
//        lists.add(list2);
//        List<String> list3 = new ArrayList<String>(0);
//        list3.add("g");
//        list3.add("h");
//        lists.add(list3);
        generateData(getFirstCharFromString(CHINESE_CHAR), new ArrayList<String>(0));
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }

    /**
     *  获取一段中文字符拼音首字母的(包括多音字的组合)数组
     * getFirstCharFromString
     * @param str
     * @return
     * @return the List<List<String>>
     */
    public static List<List<String>> getFirstCharFromString(String str) {
        List<List<String>> rets = new ArrayList<List<String>>(0);
        if (null != str && !"".equals(str.trim())) {
            int len = str.trim().length();
            char chr = ' ';
            for (int i = 0; i < len; i++) {
                Set<String> set = new HashSet<String>(0);
                chr = str.charAt(i);
                if (0x4E00 <= chr && chr <= 0x9FA5) {
                    String[] arr = PinyinHelper.toHanyuPinyinStringArray(chr);
                    for (String string : arr) {
                        set.add(string.toUpperCase().charAt(0) + "");
                    }
                } else {
                    set.add(chr + "");
                }
                List<String> list = new ArrayList<String>(0);
                Iterator<String> it = set.iterator();
                while (it.hasNext()) {
                    list.add(it.next());
                }
                rets.add(list);
            }
        } else {
            System.out.println("null value ....");
        }
        return rets;
    }

    /**
     *  生成最终的数组组合数据根据排列组合算法
     * generateData
     * @param source
     * @param target
     * @return the void
     */
    public static void generateData(List<List<String>> source, List<String> target) {
        StringBuilder sb = new StringBuilder();
        if (target.size() == NUMNER) {
            for (String string : target) {
                sb.append(string);
            }
            set.add(sb.toString());
            return;
        }
        //{{'a','b'},{'c','d'},{'e','f'}}
        for (List<String> list : source) {
            List<List<String>> newSource = new ArrayList<List<String>>(source);
            List<String> newTarget = new ArrayList<String>(target);
            newSource.remove(list);
            for (String str : list) {
                newTarget.add(str);
                generateData(newSource, newTarget);
                newTarget.remove(str);
            }
            break;
        }
    }
}

 

分享到:
评论

相关推荐

    java汉字转拼音

    这里我们以Pinyin4j为例,它是一个开源的Java库,专门用于处理汉字和拼音的转换。 1. 引入Pinyin4j库: 首先,你需要将Pinyin4j库添加到你的项目中。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ...

    java汉字转拼音例子

    以Pinyin4j为例,这是一个广泛使用的Java库,它提供了简单易用的API来处理汉字转拼音的任务。 首先,我们需要在项目中引入Pinyin4j库。这可以通过Maven或Gradle的依赖管理来完成。例如,在Maven的pom.xml文件中添加...

    java中文转拼音工具类详解

    本文将深入探讨如何使用Java中文转拼音工具类,以`pinyin4j`为例,介绍其实现原理和具体用法。 `pinyin4j`是一个开源的Java库,专门用于处理汉字与拼音之间的转换。它提供了多种输出格式,包括声调、大小写等,能够...

    中文转换为拼音,提供了jar包和多种方法

    这里,我们主要讨论“中文转换为拼音”这一技术,并以提供的资源为例进行解析。 首先,`pinyin4j-2.5.0.jar` 是一个Java库,专门用于处理汉字到拼音的转换。Pinyin4j 是一个开源项目,它提供了丰富的API,能够方便...

    Android汉字转拼音Demo

    这个"Android汉字转拼音Demo"就是这样一个示例项目,它演示了如何在Android应用中实现汉字到拼音的转换。这个过程通常涉及到第三方库的使用,本例中采用的是`pinyin4j.jar`。 `pinyin4j.jar`是一个Java库,专门用于...

    使用拼音4j汉字转拼音例子

    总的来说,拼音4j是一个强大且易于使用的Java库,可以帮助开发人员方便地实现汉字到拼音的转换。通过理解并应用以上代码示例,你可以轻松地在自己的项目中实现类似功能,从而提高处理汉字文本的效率。

    汉字转为拼音所需jar包

    以Pinyin4j为例,这是一个常用的Java库,它支持多音字的处理,可以返回每个汉字的标准拼音、首字母、声母、韵母等多种形式。使用Pinyin4j,我们只需要引入对应的jar包到项目中,然后通过以下方式调用: ```java ...

    汉字转拼音的例子

    这种映射关系通常基于词典或者特定的算法,例如Pinyin4j库在Java中的实现,或本例中的C++实现。 `TestHZToPY.cpp`是项目的主程序文件,其中包含了实现汉字转拼音功能的核心代码。可能包含以下关键部分: 1. **汉字...

    汉字获取首字母 ,拼音 繁体等

    在这个例子中,我们使用了第三方库`PinyinHelper`来进行拼音转换。这个库可以将汉字转换成对应的拼音,然后提取首字母。 接下来,我们讨论如何获取汉字的拼音。Java标准库并未提供直接的汉字转拼音功能,因此通常...

    汉字转成拼音

    本篇将详细讲解汉字转拼音的基本原理、常见方法以及如何利用Java实现这一功能。 首先,汉字转拼音的基本原理涉及到汉字与汉语拼音的对应关系。每个汉字都有一个或多个标准的汉语拼音,这些拼音由声母(如b、p、m、f...

    取汉字拼音首字母的Demo

    这里以Pinyin4j为例,它是一个用于Java的中文拼音处理库,能够将汉字转换为拼音。 首先,添加Pinyin4j库到项目中。如果你的项目是Maven工程,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    取拼音首字母,第三方

    以Python的`pypinyin`库为例,使用该库可以这样实现取拼音首字母的功能: ```python from pypinyin import pinyin, lazy_pinyin, Style def get_initials(name): return ''.join([i[0][0].upper() for i in lazy_...

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

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    elasticsearch6.8.3拼音分词插件

    在本例中,我们将讨论的是Elasticsearch 6.8.3版本下的拼音分词插件的安装和使用。 **一、插件介绍** "elasticsearch-analysis-pinyin-6.8.3.jar" 是这个拼音分词插件的核心文件,它提供了将中文字符转换为拼音的...

    Android实现通讯录(带有拼音首字母排序的和过滤搜索

    这里以Pinyin4j为例,它是一个Java库,可以将汉字转换为拼音。首先,需要将Pinyin4j库导入项目,然后可以使用如下代码将汉字转换为拼音: ```java import net.sourceforge.pinyin4j.PinyinHelper; public static ...

    安卓Android源码——带有拼音首字母排序的listview.rar

    3. **拼音转换**:在Java中,你可以使用`Pinyin4j`库或者Android内置的`TextUtils`类的`getChars()`方法,将中文字符串转换为拼音。转换后的拼音将用于排序。 4. **获取首字母**:转换得到拼音后,需要提取每个单词...

    cndoc.rar_GPS_mp4_手机 输入法_拼音输入法_输入法 源码

    源码可能包含了拼音转换为汉字的算法、候选词的生成逻辑、以及用户交互界面的设计。 压缩包内的文件“cndoc”可能是源代码文件、文档或项目资源的集合。如果是一个源代码文件,可能包含了用C++、Java、Python等编程...

    jar包.zip-----------

    描述中提到的43个jar包覆盖了多种功能,包括处理JSON数据、经纬度转换、字符串转拼音以及WebSocket通信等,这些都是Java开发中常见的需求。 首先,让我们详细了解一下这些关键知识点: 1. **fastjson**: Fastjson...

    Android实现ListView的A-Z字母排序和过滤搜索功能 实现汉字转成拼音

    这里以`PinyinHelper`为例,它能将汉字转换为对应的拼音,然后提取首字母,供排序和索引使用。首先,确保在项目中添加`PinyinHelper`的依赖,然后在获取拼音首字母的逻辑中调用`PinyinHelper`的方法: ```java ...

    设计说明2

    在本例中,问题在于一个`s:any`元素的`minOccurs`和`maxOccurs`属性设置不正确。修正后,重新运行`wsimport`命令,这次应该能成功生成Web服务代理类。生成的代码位于指定的目录下,其中包含了与接口通信所需的Java类...

Global site tag (gtag.js) - Google Analytics