public class CharUtils {
// Hiragana to Katakana
public static String hiraganaTokatakana(String s) {
int n = s.length();
StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
sb.append( hiraganaToKatakana(c) );
}
return sb.toString();
}
public static char hiraganaToKatakana(char c) {
if (c < '\u3040') {
return c;
}
else if (c > '\u309f') {
return c;
}
return (char)(c + '\u0060');
}
// Katakana to Hiragana
public static String katakanaToHiragana(String s) {
int n = s.length();
StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
sb.append( katakanaToHiragana(c) );
}
return sb.toString();
}
public static char katakanaToHiragana(char c) {
if (c < '\u30a0') {
return c;
}
else if (c > '\u30ff') {
return c;
}
else if (c == '\u30fc') {
return c;
}
return (char)(c - '\u0060');
}
public static void main(String[] args) throws Exception {
// Hiragana to Katakana
for (char c = '\u3040' ; c < '\u30a0'; c++) {
System.out.printf("%c%c", c, hiraganaToKatakana(c));
if (c % 16 == 15) {
System.out.println();
}
else {
System.out.print("|");
}
}
System.out.println();
// Katakana to Hiragana
for (char c = '\u30a0' ; c < '\u3100'; c++) {
System.out.printf("%c%c", c, katakanaToHiragana(c));
if (c % 16 == 15) {
System.out.println();
}
else {
System.out.print("|");
}
}
System.out.println();
}
}
|