⏹全角假名转换半角假名
public class Test {
private static final char[] ZENKAKU_KATAKANA = {'ァ', 'ア', 'ィ', 'イ', 'ゥ', 'ウ', 'ェ', 'エ', 'ォ', 'オ', 'カ', 'ガ', 'キ', 'ギ', 'ク', 'グ', 'ケ', 'ゲ', 'コ', 'ゴ',
'サ', 'ザ', 'シ', 'ジ', 'ス', 'ズ', 'セ', 'ゼ', 'ソ', 'ゾ', 'タ', 'ダ', 'チ', 'ヂ', 'ッ', 'ツ', 'ヅ', 'テ', 'デ', 'ト', 'ド', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ',
'バ', 'パ', 'ヒ', 'ビ', 'ピ', 'フ', 'ブ', 'プ', 'ヘ', 'ベ', 'ペ', 'ホ', 'ボ', 'ポ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ャ', 'ヤ', 'ュ', 'ユ', 'ョ', 'ヨ', 'ラ', 'リ',
'ル', 'レ', 'ロ', 'ヮ', 'ワ', 'ヰ', 'ヱ', 'ヲ', 'ン', 'ヴ', 'ヵ', 'ヶ'};
private static final String[] HANKAKU_KATAKANA = {"ァ", "ア", "ィ", "イ", "ゥ", "ウ", "ェ", "エ", "ォ", "オ", "カ", "ガ", "キ", "ギ", "ク", "グ", "ケ", "ゲ",
"コ", "ゴ", "サ", "ザ", "シ", "ジ", "ス", "ズ", "セ", "ゼ", "ソ", "ゾ", "タ", "ダ", "チ", "ヂ", "ッ", "ツ", "ヅ", "テ", "デ", "ト", "ド", "ナ", "ニ",
"ヌ", "ネ", "ノ", "ハ", "バ", "パ", "ヒ", "ビ", "ピ", "フ", "ブ", "プ", "ヘ", "ベ", "ペ", "ホ", "ボ", "ポ", "マ", "ミ", "ム", "メ", "モ", "ャ", "ヤ",
"ュ", "ユ", "ョ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ワ", "イ", "エ", "ヲ", "ン", "ヴ", "カ", "ケ"};
public static final char ZENKAKU_KATAKANA_FIRST_CHAR = ZENKAKU_KATAKANA[0];
public static final char ZENKAKU_KATAKANA_LAST_CHAR = ZENKAKU_KATAKANA[ZENKAKU_KATAKANA.length - 1];
public static String zenkakuKkToHankakuKk(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char originalChar = str.charAt(i);
String convertedChar = zenkakuKatakanaToHankakuKatakana(originalChar);
sb.append(convertedChar);
}
return sb.toString();
}
public static String zenkakuKatakanaToHankakuKatakana(char str) {
if (str >= ZENKAKU_KATAKANA_FIRST_CHAR && str <= ZENKAKU_KATAKANA_LAST_CHAR) {
return HANKAKU_KATAKANA[str - ZENKAKU_KATAKANA_FIRST_CHAR];
} else {
return String.valueOf(str);
}
}
public static void main(String[] args) {
String result = zenkakuKkToHankakuKk("カ メイイ");
System.out.println(result);
}
}
⏹验证是否为半角假名
public class Test {
public static final String BLANK = "";
public static final String NEWLINE_CRLF = "\r\n";
public static final String NEWLINE_LF = "\n";
public static String newLineEscape(String str) {
if (str == null || BLANK.equals(str)) {
return BLANK;
}
return str.replaceAll(NEWLINE_CRLF, BLANK).replaceAll(NEWLINE_LF, BLANK);
}
public static boolean validateIsHanKatakana(String value) {
if (value == null || BLANK.equals(value)) {
return true;
}
String str = newLineEscape(value);
char[] chars = String.valueOf(str).toCharArray();
for (char aChar : chars) {
if (!((0xFF61 <= aChar && aChar <= 0xFF9F) || 0x0020 == aChar)) {
return false;
}
}
return true;
}
public static void main(String[] args) {
System.out.println(validateIsHanKatakana("カ メイイ"));
System.out.println(validateIsHanKatakana("カ メイイ"));
}
}