首页 > 编程知识 正文

搜狗拼音,fuzzy pinyin

时间:2023-05-04 12:47:33 阅读:169412 作者:4510

1 .简要介绍

在某些情况下,可能需要将汉字编程为相应的拼音,以便于数据的处理。 例如在安卓智能手机APP的开发中,要查联系人的名字,通常用拼音查。 例如,要查找“zgdsb”,请输入“cmd”,即“zgdsb”三个汉字拼音“caomengde”的每个字符的首字母。 但是,怎样才能把“zgdsb”翻译成“caomengde”? 简单的方法是制作一个大的对照表。 “比如用相关容器映射”,比如“苹果月亮、“cao”、“pydhb、“meng”、“德国”、“de”…但这种方式需要维护相对较大的对照表也就是说,用Map这样的容器是不行的。c可以用STL中的multimap解决这个问题,但Java中没有multimap这样的东西。 除非自己实现一个。

拼音4j就是为了解决这样的问题。 这是sourceforge.net的开源项目,功能非常强大。

同一个汉字支持多个发音

也支持拼音的格式输出。 例如,第几次之类,

还支持简体中文、繁体中文转换为拼音…使用方便。 以下是官方网站,可以下载。

http://pinyin4j.sourceforge.net/

2 .基本用法:

通常,只需使用其中的PinyinHelper类的静态方法toHanyuPinyinStringArray即可。 例如,以下内容:

string [ ] pinyin array=pinyin helper.tohanyupinyinstringarray ('单');

for(intI=0; i pinyinArray.length; I )

{

system.out.println (pinyin array [ I ] );

}

输出:

dan1

chan2

shan4

这三个发音,后面的数字表示第几个声音。 可以看到,静态方法toHanyuPinyinStringArray返回的数据类型是接收多个汉字发音的字符串数组。 如果toHanyuPinyinStringArray的参数不是汉字,则返回null。

3 .格式支持

拼音4j支持拼音输出的格式。 例如,“黄”可以输出“黄”、“黄2”、“虎ng”等。 以下代码似乎是输出“hung”的示例。

hanyupinyinoutputformatformat=newhanyupinyinoutputformat (;

format.settonetype (hanyupinyintonetype.with _ tone _ mark );

format.setvchartype (hanyupinyinvchartype.with _ u _ unicode );

String[] pinyinArray=null;

托里

{

pinyin array=pinyin helper.tohanyupinyinstringarray ('黄',format );

}

缓存(badhanyupinyinoutputformatcombinatione ) )。

{

e .打印任务跟踪(;

}

for(intI=0; i pinyinArray.length; I )

{

system.out.println (pinyin array [ I ] );

}

还支持大小写转换、等。 有关详细信息,请参阅拼音4j附带的文档。

4 .实际示例代码

如果尝试将某个字符中的所有汉字转换为无音调拼音输出,则该字符可能包含阿拉伯数字、英语、标点符号等。 如果完全自己写代码进行转换,那就非常麻烦了。 其中一个必须首先加以区分。 在这个文字中它们是汉字,它们是非汉字。 如果有拼音4j的话,拼音4j会自动输出空值,所以这个问题并不难。 请参见以下代码示例。

import net.source forge.pinyin 4j.*;

import net.source forge.pinyin 4j.format.hanyupinyinoutputformat;

import net.source forge.pinyin 4j.format.hanyupinyintonetype;

import net.SourceForge.pinyin 4j.format.exception.badhanyupinyinoutputformatcombination;

公共类Chinese2py

{

publicstaticvoidmain (string [ ] args ) )。

{

Hanyu hanyu=new Hanyu ();

//中英文夹杂的文本

String str='荆溪白石出,Hello天寒红叶稀少。 安卓山路元无雨,What's up? 翠湿人服。 ';

stringstrpinyin=hanyu.getstring pinyin (str;

system.out.println(strpinyin;

}

}

类汉峪

{

privatehanyupinyinoutputformatformat=null;

私有字符串[ ]拼音;

public Hanyu () )

{

format=newhanyupinyinoutputformat (;

format.settonetype (hanyupinyintonetype.without _ tone );

拼音=空;

}

转换//1字符

公共字符串字符识别(charc ) )。

{

托里

{

pinyin=pinyin helper.tohanyupinyinstringarray (c,format );

}

缓存(badhanyupinyinoutputformatcombinatione ) )。

{

e .打印任务跟踪(;

}

如果//c不是汉字,则toHanyuPinyinStringArray返回null

if(pinyin==null )返回null;

//只取一个发音,多音字时只取最初的发音

return pinyin[0];

}

//转换字符串

公共字符串图形(字符串) )。

{

stringbuilder sb=new stringbuilder (;

String tempPinyin=null;

for(intI=0; i str.length (; I )

{

temp pinyin=getcharacterpinyin (str.charat (I ) );

时间拼音==空(if ) ) )。

{

//str.Charat(I )如果不是汉字就直接

sb.append(str.Charat ) I );

}

else

{

sb.append(temppinyin );

}

}

return sb.toString (;

}

}

输出结果:

荆希百世,赫鲁希希。 Android shanluyuanwuyu,What'sup? 康嘉祥。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。