andy-j2ee  
          JAVA
          公告
          • 在夜深人靜的時候,偶彈起心愛的土琵琶,唱起那動人的歌謠(柯受良-《大哥》):偶寫了代碼好多年,偶不愛冰冷的床沿,不要逼偶想念,不要逼偶流淚,偶會翻。
          日歷
          <2011年5月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234
          統計
          • 隨筆 - 19
          • 文章 - 1
          • 評論 - 1
          • 引用 - 0

          導航

          常用鏈接

          留言簿

          隨筆分類(5)

          隨筆檔案(19)

          文章分類(1)

          文章檔案(1)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          今天開發了自己的第二個開源工具 jar包
          名稱:pinyin4j.jar
          功能: 將漢語拼音轉換為漢語拼音

          算法:
          從對應的資源文件中(文件中包含了常用漢字的unicode編碼-拼音)
          文件格式如下:
          3007 (ling2)
          4E00 (yi1)
          4E01 (ding1,zheng1)
          4E02 (kao3)
          4E03 (qi1)
          4E04 (shang4,shang3)
          .
          .
          .
          用數據流的方式讀取 然后將unicode碼以key,pinyin為value存入一個HashMap中

          接口:
              傳入:漢語拼音的字符串
              返回:拼音的字符串數組(即每個漢語拼音對應相應的拼音)


          源碼:
          package com.anduo.pinyin4j;
          
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.util.HashMap;
          
          public class PinYinHelper {
          	private static HashMap<String, String> hashMap = new HashMap<String, String>();
          
          	/**
          	 * 將unicode-to-hanyu-pinyin.txt文件 以unicode為key pinyin為value 加到hashmap中
          	 */
          	private static void myReader() {
          		InputStream is = PinYinHelper.class.getClass().getResourceAsStream(
          				"/resource/unicode_to_hanyu_pinyin.txt");
          		BufferedReader breader = new BufferedReader(new InputStreamReader(is));
          		String s;
          		String unicode;
          		String pinyin;
          		try {
          			while ((s = breader.readLine()) != null) {
          				// 提取文件流每行中的unicode碼以及 pinyin字符串
          				unicode = s.substring(0, 4);
          				pinyin = s.substring(6, s.length() - 1);
          				hashMap.put(unicode.toLowerCase(), pinyin);
          			}
          		} catch (IOException e) {
          			e.printStackTrace();
          		}
          	}
          
          	/**
          	 * 將漢語轉換為漢語拼音
          	 * 
          	 * @param value
          	 * @return pinyin[]
          	 */
          	public static String[] toHanYuPinYin(String value) {
          
          		myReader();
          
          		String[] result = new String[value.length()];
          		String unicode;
          		String pinyin;
          		for (int i = 0; i < value.length(); i++) {
          			Character c = value.charAt(i);
          			unicode = Integer.toHexString(c);// 得到漢字的unicode編碼
          			pinyin = hashMap.get(unicode);// 從hashMap中找到漢子的拼音
          			result[i] = pinyin;
          		}
          
          		return result;
          	}
          }
          
          


          然后導出為jar包

          測試一下:
          新建一個java工程,然后將剛做好的jar包導入的工程中
          新建一個test類
          package com.anduo;
          
          import com.anduo.pinyin4j.PinYinHelper;
          
          public class test {
          	public static void main(String[] args) {
          
          		String s[] = PinYinHelper.toHanYuPinYin("大但是關鍵的是概多少了攻擊多少");
          		for (String string : s) {
          			System.out.println(string);
          		}
          
          	}
          }
          
          


          測試效果:
          da4,dai4
          dan4
          shi4
          guan1
          jian4
          de5,di4,di2
          shi4
          gai4
          duo1
          shao3,shao4
          le5,liao3,liao4
          gong1
          ji1
          duo1
          shao3,shao4


          遇到的問題,在導出jar包的時候出了很多錯誤
          主要問題出在: 如何讀取jar包中的資源文件 這個可以參考我收藏的一篇文章




          已有 0 人發表留言,猛擊->>這里<<-參與討論


          ITeye推薦



          posted on 2011-05-14 19:53 安多 閱讀(266) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          Copyright © 安多 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 娄烦县| 衡南县| 马山县| 安塞县| 平阳县| 新源县| 绥芬河市| 沙田区| 卓资县| 兰考县| 阜南县| 长沙市| 清原| 莆田市| 泰顺县| 塔河县| 安泽县| 金湖县| 阿拉善右旗| 聂拉木县| 上思县| 宁乡县| 新巴尔虎右旗| 富宁县| 安阳县| 长垣县| 滦南县| 溆浦县| 万载县| 宁夏| 芦山县| 南昌市| 吉隆县| 金门县| 蒙自县| 姚安县| 无极县| 阿拉善右旗| 日土县| 南华县| 陕西省|