JAVAは中国語の名前の頭文字を取得して、例えば:“阿魯卓玛”、取得した頭文字は“alzm”です
3388 ワード
1、FirstLetterUtilクラスのgetFirstLetter()メソッドを呼び出し、名前の頭文字を取得します.例えば、「アルチャマ」が取得したアルファベットは「alzm」です.
String firstLetter = FirstLetterUtil.getFirstLetter(「アルチャマ」);
2、コード、以下:
String firstLetter = FirstLetterUtil.getFirstLetter(「アルチャマ」);
2、コード、以下:
public class FirstLetterUtil {
private static int BEGIN = 45217;
private static int END = 63486;
// , GB2312 , “ ” a 。
// i, u, v ,
private static char[] chartable = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ',};
//
// GB2312
private static int[] table = new int[27];
//
private static char[] initialtable = {'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
't', 't', 'w', 'x', 'y', 'z',};
//
static {
for (int i = 0; i < 26; i++) {
table[i] = gbValue(chartable[i]);// GB2312 , 。
}
table[26] = END;//
}
/**
* , : 、 、
*/
public static String getFirstLetter(String sourceStr) {
String result = "";
String str = sourceStr.toLowerCase();
int StrLength = str.length();
int i;
try {
for (i = 0; i < StrLength; i++) {
result += Char2Initial(str.charAt(i));
}
} catch (Exception e) {
result = "";
}
return result;
}
/**
* , , , '0'
*/
private static char Char2Initial(char ch) {
// : ,
if (ch >= 'a' && ch <= 'z') {
return ch;
}
if (ch >= 'A' && ch <= 'Z') {
return ch;
}
// : , ,
// , 。
// , 。
int gb = gbValue(ch);//
if ((gb < BEGIN) || (gb > END))// ,
{
return ch;
}
int i;
for (i = 0; i < 26; i++) {// , break, “[,)”
if ((gb >= table[i]) && (gb < table[i + 1])) {
break;
}
}
if (gb == END) {// GB2312
i = 25;
}
return initialtable[i]; // ,
}
/**
* cn
*/
private static int gbValue(char ch) {// (GB2312) 。
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;
}
}
}