引用 使用Java得到漢字的拼音首字母

 

引用java

恐龍007使用Java得到漢字的拼音首字母

因爲工做中須要從漢字中提取其拼音首字母,爲了偷懶^_^....本人寫了如下類實現了自動將漢字轉化爲其拼音首字母.c++

能夠直接提取如下類中的方法,並應用到其餘場合下.測試

因爲寫的比較倉促,對該類只進行了大概的測試,所以本人並不保證代碼百分之百的正確,請諒解...編碼

package com.test;code

import java.io.UnsupportedEncodingException;blog

public class PinYin {字符串

 /**
  *漢字拼音的首字母,不存在i,u,v
  */
 private final static int[] HanZiCode = { 0xB0A1, 0xB0C5, 0xB2C1, 0xB4EE,
   0xB6EA, 0xB7A2, 0xB8C1, 0xB9FE, 0xBBF7, 0xBFA6, 0xC0AC, 0xC2E8,
   0xC4C3, 0xC5B6, 0xC5BE, 0xC6DA, 0xC8BB, 0xC8F6, 0xCBFA, 0xCDDA,
   0xCEF4, 0xD1B9, 0xD4D1, 0xD8A0 };
 private final static int LENGTH = HanZiCode.length;get

 /**
  * string


  * 該方法用於得到傳入的漢字的首字母
  * io


  *


  * 若是傳入的word不屬於GB2312所包含的漢字,則原樣返回
  *


  *

若是傳入多個漢字,則原樣返回


  * @param word
  *            String型值
  */
 public String getPinYin(String word) {
  byte[] byte1;
  char c = 'a' - 1;
  try {
   byte1 = word.getBytes("gb2312");
   if (byte1.length == 2) {
    int codeValue = ((byte1[0] + 256) * 256 + byte1[1] + 256);
    if (codeValue >= HanZiCode[0]
      && codeValue <= HanZiCode[LENGTH - 1]) {
     for (int i = 0; i < LENGTH; i++) {
      if (codeValue >= HanZiCode[i]) {
       if ((c + 1 == 'i')) {
        c += 2;
       }else if(c+1=='u'){
        c+=3;
       } else {
        c++;
       }
      }
     }
     return c + "";
    }
   }
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
  }
  return word;
 }

 /**
  *得到傳入字符串中每一個漢字拼音的首字母
  */
 public String chinese2PinYin(String str){
  int length=str.length();
  String result="";
  for(int i=0;i
   result+=getPinYin(str.substring(i, i+1));
  }
  return result;
 }
 /**
  * @param args
  * @throws UnsupportedEncodingException
  */
 public static void main(String[] args) throws UnsupportedEncodingException {
  // TODO Auto-generated method stub
  PinYin py = new PinYin();
  System.out.println(py.chinese2PinYin("漢字轉拼音"));
 }

}

 

對該類若有疑問請留言,本人將及時予以答覆..

對於其原理感興趣的朋友能夠參考GB2312的編碼表

相關文章
相關標籤/搜索