java獲取中文拼音首字母工具類定義與用法實例
本文實例講述了java獲取中文拼音首字母工具類定義與用法。分享給大家供大家參考,具體如下:
package com.sw.documentary.common.utils;
public class GB2Alpha {
//字母Z使用了兩個標簽,這里有27個值
//i, u, v都不做聲母, 跟隨前面的字母
private char[] chartable =
{
'啊', '芭', '擦', '搭', '蛾', '發(fā)', '噶', '哈', '哈',
'擊', '喀', '垃', '媽', '拿', '哦', '啪', '期', '然',
'撒', '塌', '塌', '塌', '挖', '昔', '壓', '匝', '座'
};
private char[] alphatable =
{
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};
private int[] table = new int[27];
//初始化
{
for (int i = 0; i < 27; ++i) {
table[i] = gbValue(chartable[i]);
}
}
public GB2Alpha() {
}
//主函數(shù),輸入字符,得到他的聲母,
//英文字母返回對應(yīng)的大寫字母
//其他非簡體漢字返回 '0'
public char Char2Alpha(char ch) {
if (ch >= 'a' && ch <= 'z')
return (char) (ch - 'a' + 'A');
if (ch >= 'A' && ch <= 'Z')
return ch;
int gb = gbValue(ch);
if (gb < table[0])
return '0';
int i;
for (i = 0; i < 26; ++i) {
if (match(i, gb)) break;
}
if (i >= 26)
return '0';
else
return alphatable[i];
}
//根據(jù)一個包含漢字的字符串返回一個漢字拼音首字母的字符串
public String String2Alpha(String SourceStr){
String Result = "";
int StrLength = SourceStr.length();
int i;
try {
for (i = 0; i < StrLength; i++) {
Result += Char2Alpha(SourceStr.charAt(i));
}
} catch (Exception e) {
Result = "";
}
return Result;
}
private boolean match(int i, int gb) {
if (gb < table[i])
return false;
int j = i + 1;
//字母Z使用了兩個標簽
while (j < 26 && (table[j] == table[i])) ++j;
if (j == 26)
return gb <= table[j];
else
return gb < table[j];
}
//取出漢字的編碼
private int gbValue(char ch) {
String str = new String();
str += ch;
try {
byte[] bytes = str.getBytes("GB2312");
if (bytes.length < 2)
return 0;
return (bytes[0] << 8 & 0xff00) + (bytes[1] &
0xff);
} catch (Exception e) {
return 0;
}
}
public static void main(String[] args) {
GB2Alpha obj1 = new GB2Alpha();
System.out.println(obj1.String2Alpha("腳本之家"));
System.out.println(obj1.String2Alpha("歡迎你"));
return;
}
}
運行結(jié)果:
JBZJ
HYN
PS:這里再為大家提供幾款本站拼音與字母相關(guān)工具供大家參考:
在線中英文根據(jù)首字母排序工具:
http://tools.jb51.net/aideddesign/zh_paixu
在線漢字轉(zhuǎn)換成拼音工具:
http://tools.jb51.net/transcoding/pinyin
在線中文漢字轉(zhuǎn)拼音工具:
http://tools.jb51.net/transcoding/hanzi2pinyin
在線中文漢字拼音對照轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/zh_pinyin
在線字母大小寫轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/upper
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)組操作技巧總結(jié)》、《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)學(xué)運算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》及《Java操作DOM節(jié)點技巧總結(jié)》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
實現(xiàn)quartz定時器及quartz定時器原理介紹
Quartz是一個大名鼎鼎的Java版開源定時調(diào)度器,功能強悍,使用方便,下面我們看看如何使用它2013-12-12
Java基礎(chǔ)教程之對象的方法與數(shù)據(jù)成員
這篇文章主要介紹了Java基礎(chǔ)教程之對象的方法與數(shù)據(jù)成員,本文講解對象的方法與數(shù)據(jù)成員相關(guān)知識,因為java是面向?qū)ο笳Z言,本文的知識都是經(jīng)常要用到的,需要的朋友可以參考下2014-08-08
使用SpringBoot AOP 記錄操作日志、異常日志的過程
這篇文章主要介紹了使用SpringBoot AOP 記錄操作日志、異常日志的過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
Java基礎(chǔ)之數(shù)組模擬循環(huán)隊列
這篇文章主要介紹了Java基礎(chǔ)之數(shù)組模擬循環(huán)隊列,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們也有非常好的幫助,需要的朋友可以參考下2021-04-04
Spring Boot項目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot項目添加外部Jar包以及配置多數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

