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

来源:互联网 发布:潘玮柏闪亮的爸爸知乎 编辑:程序博客网 时间:2024/04/29 07:45
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);// 转换成unicodeString 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);}}}