生活随笔
收集整理的這篇文章主要介紹了
Java实现提取拼音首字母
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在很多軟件中,輸入拼音的首寫字母就可以快速定位到某個詞條。比如,在鐵路售票軟件中,輸入: “bj”就可以定位到“北京”。怎樣在自己的軟件中實現這個功能呢?問題的關鍵在于:對每個漢字必須能計算出它的拼音首字母。
GB2312漢字編碼方式中,一級漢字的3755個是按照拼音順序排列的。我們可以利用這個特征,對常用漢字求拼音首字母。
GB2312編碼方案對每個漢字采用兩個字節表示。第一個字節為區號,第二個字節為區中的偏移號。為了能與已有的ASCII編碼兼容(中西文混排),區號和偏移編號都從0xA1開始。
我們只要找到拼音a,b,c,…x,y,z 每個字母所對應的GB2312編碼的第一個漢字,就可以定位所有一級漢字的拼音首字母了(不考慮多音字的情況)。下面這個表給出了前述信息。請你利用該表編寫程序,求出常用漢字的拼音首字母。
a 啊 B0A1 b 芭 B0C5 c 擦 B2C1 d 搭 B4EE e 蛾 B6EA f 發 B7A2 g 噶 B8C1 h 哈 B9FE j 擊 BBF7 k 喀 BFA6 l 垃 C0AC m 媽 C2E8 n 拿 C4C3 o 哦 C5B6 p 啪 C5BE q 期 C6DA r 然 C8BB s 撒 C8F6 t 塌 CBFA w 挖 CDDA x 昔 CEF4 y 壓 D1B9 z 匝 D4D1
【輸入、輸出格式要求】
用戶先輸入一個整數n (n<100),表示接下來將有n行文本。接著輸入n行中文串(每個串不超過50個漢字)。
程序則輸出n行,每行內容為用戶輸入的對應行的漢字的拼音首字母。
字母間不留空格,全部使用大寫字母。
例如: 用戶輸入: 3 大家愛科學 北京天安門廣場 軟件大賽
則程序輸出: DJAKX BJTAMGC RJDS
import java.io.UnsupportedEncodingException;
import java.util.Scanner;public class Main {public static String[] arrayA = {"啊","芭","擦 ","搭","蛾 ","發 ","噶 ","哈 ","擊","喀","垃 ","媽 ","拿","哦 ","啪 ","期 ","然 ", "撒 ","塌","挖","昔","壓","匝"}; public static int[] valueA = new int[23];public static char[] resultA = {'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z'};public int getNum(String A) {byte[] a = null;try {a = A.getBytes("GB2312");} catch (UnsupportedEncodingException e) {e.printStackTrace();}int b = ((a[0]<<8)&0xff00) + (a[1]&0xff);return b;}public String getResult(String A) {int num = getNum(A);int i = 0;for(;i < 23;i++)if(valueA[i] > num)break;String r = "" + resultA[i - 1];return r;}public static void main(String[] args) {Main test = new Main();for(int i = 0;i < 23;i++)valueA[i] = test.getNum(arrayA[i]);Scanner in = new Scanner(System.in);int n = in.nextInt();String[] result = new String[n];for(int i = 0;i < n;i++) {String A = in.next();StringBuffer s = new StringBuffer("");for(int j = 0;j < A.length();j++) {String temp = "" + A.charAt(j);s.append(test.getResult(temp));}result[i] = s.toString();}for(int i = 0;i < n;i++)System.out.println(result[i]);}
}
總結
以上是生活随笔 為你收集整理的Java实现提取拼音首字母 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。