您的位置:首页 > 其它

简单实现汉字向拼音的转换

2012-08-06 16:13 357 查看
public class PinyinHelper {
/**
* @param value
*            要转换成拼音的汉字
* @return 转换之后的字符串(拼音)数组
* @throws IOException
*/
public static String[] toPinyin(String value) {
String[] pinyinArray = new String[value.length()];
Map<String, String> map = toMap();
// 读取value,得到对应的unicdoe值
for (int i = 0; i < value.length(); i++) {
Character character = value.charAt(i);
// 转换成unicode
String unicode = Integer.toHexString(character);
unicode = unicode.toUpperCase();// 因为字库文件中是大写的
String pinyin = map.get(unicode);
pinyinArray[i] = pinyin;
}
return pinyinArray;
}

private static Map<String, String> toMap() {
String line;// 用来保存每行读取的内容
Map<String, String> map = new HashMap<String, String>();

BufferedReader bufferedReader = null;
try {
InputStream is = PinyinHelper.class
.getResourceAsStream("/pingyindb/unicode_to_hanyu_pinyin.txt");//读取jar包下文件的方法
bufferedReader = new BufferedReader(new InputStreamReader(is));
line = bufferedReader.readLine();
while (line != null) {
/**
* 可以用正则表达式简化
*/
String unicode = line.substring(0, 4);
String pinyin = line.substring(6, line.length() - 1);
map.put(unicode, pinyin);
line = bufferedReader.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {

try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}

}
return map;
}

public static void main(String[] args) {
String[] s = toPinyin("今天天气不错啊!");
for (String temps : s) {
System.out.println(temps);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: