build.gradle
implementation 'com.ibm.icu:icu4j:70.1'
import com.ibm.icu.text.Transliterator;
public class KatakanaToHepburn{
public static void main(String[] args) {
Transliterator latin = Transliterator.getInstance("Katakana-Latin");
Transliterator hepburn = Transliterator.getInstance("Katakana-Latin/BGN");
System.out.println(latin.transform("トウキョウ"));
System.out.println(hepburn.transform("トウキョウ"));
System.out.println(latin.transform("シンバシ"));
System.out.println(hepburn.transform("シンバシ"));
System.out.println(latin.transform("ッア"));
System.out.println(hepburn.transform("ッア"));
}
}
詳細は BGN/PCGNラテン文字表記法(wikipedia) にある。日本語ではBGNがヘボン式ローマ字を指す、という理解でとりあえずはOKと思われる。
実行結果は以下の通り。
toukyou
tōkyō
shinbashi
shimbashi
~tsua
ッa
上記の通り「トウキョウ」などは長音符号つき文字になるのでそこは必要に応じて変換が必要。また、ヘボン式として変換出来ないカタカナはそのままになる点にも注意が必要。