メニューを印刷して入力などを取得するコンソールアプリがあります。メニューシステムには、下線を引いたタイトルがあります。
Main Menu
=========
タイトルはさまざまなサイズになる可能性があるため、最初の試みは文字列の長さを取得し、指定された下線文字の多くを印刷することでした. 残念ながら、これは日本語ロケールでは機能しません。タイトルは .properties ファイルに保存され、ResourceBundle クラスを使用してフェッチされます。
主にGUIに関連していると思われるStackOverflowでいくつかの可能な解決策を見たので、役に立ちませんでした:
public static int getGraphemeCount(String text) {
int graphemeCount = 0;
BreakIterator graphemeCounter = BreakIterator.getCharacterInstance();
graphemeCounter.setText(text);
while (graphemeCounter.next() != BreakIterator.DONE)
graphemeCount++;
return graphemeCount;
}
public static void outputTitle(String title,char underChar) {
String underline = repeats(underChar,getGraphemeCount(title));
System.out.printf("\n\t%s\n\t%s\n",title,underline);
}
すべてのテキスト (会社名や製品名など) が翻訳されるわけではないという余分な問題があります。
[アップデート]
出力を詳しく見てみると、個々の日本語の文字が英語の文字ごとに 2 つの場所を占めているように見えます。これを文字単位で判断する機能はありますか?
[アップデート]
何かご意見は?
サイモン