java 獲取漢字拼音的首字母

2021-08-31 17:56:54 字數 1576 閱讀 4674

在專案中要更能根據某些查詢條件(比如姓名)的首字母作為條件進行查詢,比如查乙個叫「張三」的人,可以輸入『zs'。寫了乙個工具類如下:

/**gb 2312-80 把收錄的漢字分成兩級。第一級漢字是常用漢字,計 3755 個, 

* 置於 16~55 區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字, 

* 計 3008 個,置於 56~87 區,按部首/筆畫順序排列,所以本程式只能查到

* 對一級漢字的聲母。同時對符合聲母(zh,ch,sh)只能取首字母(z,c,s)

*/引數是 int, 輸入的byte 會自動擴充套件為int;

如果byte的高位為1,擴充套件高位的三位元組全為 ff ,即 ff ff ff byte

如果byte的高位為0,擴充套件高位的三位元組全為 00 ,即 00 00 00 byte

而 byte   & 0xff 等同於

byte   & 0x000000ff

試比較:

byte b = (byte)0x81;

system.out.println(integer.tohexstring(b));

system.out.println(integer.tohexstring(b & 0xff));

static final int gb_sp_diff = 160;

// 存放國標一級漢字不同讀音的起始區位碼

static final int secposvaluelist = ;

// 存放國標一級漢字不同讀音的起始區位碼對應讀音

static final char firstletter = ;

// 獲取乙個字串的拼音碼

public static string getfirstletter(string oristr) ;

byte unicode = new string(temp).getbytes();

if (unicode[0] < 128 && unicode[0] > 0) else

} return buffer.tostring();

} // 獲取乙個漢字的拼音碼

public static character getfirstletter(char ch) catch (unsupportedencodingexception e)

if (unicode[0] &0xff< 128 && unicode[0]&0xff > 0) else

} /**

* 獲取乙個漢字的拼音首字母。 gb碼兩個位元組分別減去160,轉換成10進製碼組合就可以得到區位碼

* 例如漢字「你」的gb碼是0xc4/0xe3,分別減去0xa0(160)就是0x24/0x43

* 0x24轉成10進製就是36,0x43是67,那麼它的區位碼就是3667,在對照表中讀音為『n』

*/static char convert(byte bytes)

secposvalue = bytes[0] * 100 + bytes[1];

for (i = 0; i < 23; i++)

} return result;

}

java獲取漢字拼音首字母

在專案中要更能根據某些查詢條件 比如姓名 的首字母作為條件進行查詢,比如查乙個叫 李曉明 的人,可以輸入 lxm 寫了乙個工具類如下 取得給定漢字串的首字母串,即聲母串 title chinesechartoen date 2004 02 19 注 只支援gb2312字符集中的漢字 public f...

java 獲取漢字拼音的首字母

在專案中要更能根據某些查詢條件 比如姓名 的首字母作為條件進行查詢,比如查乙個叫 張三 的人,可以輸入 zs 寫了乙個工具類如下 gb 2312 80 把收錄的漢字分成兩級。第一級漢字是常用漢字,計 3755 個,置於 16 55 區,按漢語拼音字母 筆形順序排列 第二級漢字是次常用漢字,計 300...

獲取漢字拼音首字母

有個專案需要用到生成漢字的首字母,但從網上查了一下,對於多音字的處理都不是很好,所以就利用pinyin4j這個工具包自己寫了乙個。用到的jar包是pinyin4j 2.5.0.jar 獲取拼音首字母,多音字用逗號隔開 public static string getfirstspell string...