将文字转换为拼音

package util;

import java.util.HashSet;
import java.util.Set;
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 PingYingTest {
    public static String getEname(String name) {
        HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat();
        pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
        try {
            return PinyinHelper.toHanyuPinyinString(name, pyFormat, "");
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return null;
    }
     public static Set<String> getPinyin(String src){
      if(src!=null && !src.trim().equalsIgnoreCase("")){
       char[] srcChar ;
       srcChar=src.toCharArray();
       HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();
       hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
       hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
       hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);  

       String[][] temp = new String[src.length()][];
       for(int i=0;i<srcChar.length;i++){
        char c = srcChar[i];
        if(String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")){
         try{
          temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);
         }catch(BadHanyuPinyinOutputFormatCombination e) {
          e.printStackTrace();
         }
        }else if(((int)c>=65 && (int)c<=90) || ((int)c>=97 && (int)c<=122)){
         temp[i] = new String[]{String.valueOf(srcChar[i])};
        }else{
         temp[i] = new String[]{""};
        }
       }
       String[] pingyinArray = Exchange(temp);
       Set<String> pinyinSet = new HashSet<String>();
       for(int i=0;i<pingyinArray.length;i++){
        pinyinSet.add(pingyinArray[i]);
       }
       return pinyinSet;
      }
      return null;
     }
        public static String[] Exchange(String[][] strJaggedArray){
            String[][] temp = DoExchange(strJaggedArray);
            return temp[0];
        }  

        private static String[][] DoExchange(String[][] strJaggedArray){
            int len = strJaggedArray.length;
            if(len >= 2){
                int len1 = strJaggedArray[0].length;
                int len2 = strJaggedArray[1].length;
                int newlen = len1*len2;
                String[] temp = new String[newlen];
                int Index = 0;
                for(int i=0;i<len1;i++){
                    for(int j=0;j<len2;j++){
                        temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];
                        Index ++;
                    }
                }
                String[][] newArray = new String[len-1][];
                for(int i=2;i<len;i++){
                    newArray[i-1] = strJaggedArray[i];
                }
                newArray[0] = temp;
                return DoExchange(newArray);
            }else{
             return strJaggedArray;
            }
        }
    public static void main (String[] args){
        Set<String> s = getPinyin("吃饭了");
        for(String str:s){
            System.out.println(str);
        }
    }
}
时间: 2024-10-16 18:50:03

将文字转换为拼音的相关文章

PHP如何将中文转换为拼音

用来得到中文的首字母: 这个是将中文转换为拼音的类:charset <?php/*** 汉字转化为拼音,拼音转化为汉字**/ class charset{private $_code=array(array("a",'-20319'),array("ai",'-20317'),array("an",'-20304'),array("ang",'-20295'),array("ao",'-20292')

利用Pinyin4j把中文转换为拼音

原文:利用Pinyin4j把中文转换为拼音 源代码下载地址:http://www.zuidaima.com/share/1550463764974592.htm 利用Pinyin4j把中文转换为拼音: package com.zuidaima; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.source

在数据库中将中文转换为拼音或者汉字首字母 转

sql数据库自定义一个函数把下面代码写进去 功能是得到汉字拼音首字母 如下: 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 create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word n

C#编程入门--将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符

将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 #region 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 /// <summary> /// 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 /// </summary> /// <param name="text"></param> /// <returns></returns> public static string G

iOS将汉字转换为拼音

将汉字转换为拼音 - (NSString *)chineseToPinyin:(NSString *)chinese withSpace:(BOOL)withSpace { CFStringRef hanzi = (__bridge CFStringRef)chinese; CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, hanzi); CFStringTransform(string, NULL, kCFString

java汉字转换为拼音

原文:java汉字转换为拼音 代码下载地址:http://www.zuidaima.com/share/1550463275240448.htm 输入的字符串是:"这是一个中文" 运行结果: 标签: java 汉字 拼音 转化话题: 语言基础 脚本和工具

GB2312简体中文转换为拼音的一种方法

GBK是GB18030的子集(GB18030暂不追溯). GBK编码标准共收录汉字21003个.符号883个,并提供1894个造字码位,简.繁体字融于一库. GB2312简体中文编码表:http://tools.jb51.net/table/gb2312 GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个:同时,GB 2312收录了包括拉丁字母.希腊字母.日文平假名及片假名字母.俄语西里尔字母在内的682个全角字符.整个字符集分成94个区,每区有94个位. GB23

CKEditor5 输入文字时拼音和汉字同时输入问题

在使用 CKEditor5 + vue 时,出现输入文字时,拼音和文字一起输入到编辑器到问题.与之前项目中使用 ckeditor 的区别是,这次项目是在 python 架构下局部引入 ckeditor ,写法如下: html: <ckeditor id="editor" class="notice-editor" :editor="editor" :config="editorConfig" @ready="o

C#实现汉字转换为拼音缩写的代码

using System; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial