不要pinyin4j的话同类开源的还有
1 JPinyin 在pinyin4j基础上做了改进
2 汉字, 拼音,排序 chineseandpinyin 这个似乎不符合你
可以使用正则表达式+中文字符编码区间验证一个字符串中是否包含汉字
代码如下:
public static void main(String[] args) {
int count = 0;
String regEx = "[\\u4e00-\\u9fa5]";
//Systemoutprintln(regEx);
String str = "中文fdas ";
//Systemoutprintln(str);
Pattern p = Patterncompile(regEx);
Matcher m = pmatcher(str);
while (mfind()) {
for (int i = 0; i <= mgroupCount(); i++) {
count = count + 1;
}
}
Systemoutprintln("共有 " + count + "个 ");
}
public
static
void
main(String[]
args)
{
Pattern
p_str
=
Patterncompile("[\\u4e00-\\u9fa5]+");
String
str="我是汉字";
Matcher
m
=
p_strmatcher(str);
if(mfind()&&mgroup(0)equals(str)){
Systemoutprintln("Ok");
}
}
这个就可以判断,输入任意个字符,必须所有的都是中文,才算是
一个汉字 只对应 一个拼音 ,但是一个拼音是对应多个汉字的, 你想要的功能,就好像一个输入法,输入一堆拼音,显示对应的汉字。这个我不知道,有没有输入法提供这样的接口,简单点就是这样,但是复杂点,根据你输入的拼音显示出足够智能的汉字,这不简单。java有把汉字转拼音的架包,不是拼音转汉字
如果这种情况不和很多的话,可以使用replaceall("重庆","cq")进行替换。如果太多了话就。能想到的办法就是做一个词组表,用来进行替换。如果有好的建议,欢迎讨论。
获取汉字拼音的常规办法就是pinyin4j。这个百度下,没什么问题。
使用pinyin4j的思路,做出一张多音字词组表。根据词组表替换成正确的字母首拼,之后再进行pinyin4j进行转换
import java io ;//导入 *** 作要用到的类
public class main {
public static void main(String args[]) {
File file = new File( c:/test txt ) // 源文件位置
FileReader fr;
try {
fr = new FileReader(file)
BufferedReader in = new BufferedReader(fr) // 包装文件输入流 可整行读取
String line;
try {
while ((line = in readLine()) != null) {
String a = pinyin(line)
int shengdiaoLetter = Integer parseInt(a substring(
a length() a length()))
a = a substring( a length() ) +
+ a substring(shengdiaoLetter shengdiaoLetter + )
System out println(a)
}
} catch (IOException e) {
// TODO Auto generated catch block
e printStackTrace()
}
} catch (FileNotFoundException e) {
// TODO Auto generated catch block
e printStackTrace()
}// 创建文件输入流
}
private static String pinyin(String input) {
int position = ;
int onlyaeiou = ;
input = input toLowerCase()
// 单个韵母不必说 (单个的韵母 当然就标它上面了)
if (ntains( a )) {
onlyaeiou++;
}
if (ntains( e )) {
onlyaeiou++;
}
if (ntains( i )) {
onlyaeiou++;
}
if (ntains( o )) {
onlyaeiou++;
}
if (ntains( u )) {
onlyaeiou++;
}
if (ntains( v )) {
onlyaeiou++;
}
if (onlyaeiou == ) {
if (ntains( a )) {
position = input indexOf( a )
}
if (ntains( e )) {
position = input indexOf( e )
}
if (ntains( i )) {
position = input indexOf( i )
}
if (ntains( o )) {
position = input indexOf( o )
}
if (ntains( u )) {
position = input indexOf( u )
}
if (ntains( v )) {
position = input indexOf( v )
}
return input + position;
}
if (ntains( a )) {
position = input indexOf( a )
return input + position;
}
// 没有a母找o e
else if (ntains( o )) {
position = input indexOf( o )
return input + position;
} else if (ntains( e )) {
position = input indexOf( e )
return input + position;
}
// iu 并列标在后
if (ntains( iu )) {
position = input indexOf( iu ) + ;
return input + position;
}
if (ntains( a )) {
position = input indexOf( a )
return input + position;
}
if (ntains( e )) {
position = input indexOf( e )
return input + position;
}
if (ntains( i )) {
position = input indexOf( i )
return input + position;
}
if (ntains( o )) {
position = input indexOf( o )
return input + position;
}
if (ntains( u )) {
position = input indexOf( u )
return input + position;
}
if (ntains( v )) {
position = input indexOf( v )
return input + position;
}
return input;
}
lishixinzhi/Article/program/Java/hx/201311/25755
以上就是关于什么开源java框架能通过汉字得到拼音,要求对非汉字求拼音不抛异常,不要推荐pinyin4j全部的内容,包括:什么开源java框架能通过汉字得到拼音,要求对非汉字求拼音不抛异常,不要推荐pinyin4j、java怎么识别一个字符串中有汉字、java判断字符串是拼音还是汉字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)