漢字到拼音的華麗變身

  

  需求背景


  ITOO高校雲平臺系統,這是一個基於雲的面向各大高校的教育系統,它使得教學管理更高效、更規範。隨着各大

高校註冊數量的增加,對於數據的安全性、將來數據的維護和數據庫的擴展等等,都是非常值得考慮的問題。目前我

們對於這一風險的解決方案是“多租戶”。

  每當有一個高校在ITOO平臺進行註冊時,我們都會根據該校的註冊名稱自動爲其生成對應的數據庫名和一套基礎

數據表,該數據庫名是唯一的,例如河北農業大學對應的數據庫名爲hbnybase。這樣每個高校的數據信息都在唯一的

數據庫中進行存儲,既提高了數據的安全性又提高了運維效率。


  技術實現


首先需要在項目中下載並引用pinyin4j.jar文件。轉換過程的實現:

<span style="font-size:18px;">
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class GetPinYinTest {

	public static String getPinYin(String chinesName) {
		String pinyinName = null;
		char[] nameChar = chinesName.toCharArray();
		// 創建格式化對象,設置漢語拼音的輸出格式
		HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
		// 設置爲全小寫格式
		defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		// 設置爲無聲調格式
		defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		try {
			for (int i = 0; i < nameChar.length; i++) {
				String str = Character.toString(nameChar[i]);
				// 判斷是否爲漢字
				if (str.matches("[\\u4E00-\\u9FA5]+")) {
					String pinyin = "";
					// 取漢字所有全拼的第一種讀音
					pinyin = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],
							defaultFormat)[0];
					// 取漢語拼音的首字母
					// pinyinName+=pinyin.charAt(0);
					// 拼接所有漢語拼音
					pinyinName += pinyin + "";

				} else {// 不是漢字字符
					pinyinName += str;
				}
			}
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			e.printStackTrace();
		}

		return pinyinName+"base";

	}
}</span>

   在日常開發中,漢語轉拼音的案例比比皆是,具體轉換規則是由業務做驅動的。技術沒有好壞,對於一款軟件來

說,“業務驅動,設計先行”,好的設計要勝於好的技術,因此優秀嚴禁的設計是非常值得學習和研究的。

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章