Stringの文字列を縦書きに変換するメソッド
JavaFXで、そのままでは縦書きが実現できなかったので、仕方なく作ったやつ。
public class TateGakiConverter { private static String convert(String inputString) { // まず、入力文字列を"\n"(改行文字)で分解する String[] eachLineBefore = inputString.split("\n"); // 変換後の文字列の行数・列数を計算する int colSizeAfter = eachLineBefore.length; int rowSizeAfter = Integer.MIN_VALUE; for (int i = 0; i < eachLineBefore.length; i++) { if (eachLineBefore[i].length() > rowSizeAfter) { rowSizeAfter = eachLineBefore[i].length(); } } // 変換処理 StringBuilder outputString = new StringBuilder(); for (int row = 0; row < rowSizeAfter; row++) { for (int col = 0; col < colSizeAfter; col++) { int index = (colSizeAfter - 1) - col; if (row < eachLineBefore[index].length()) { outputString.append(eachLineBefore[index].charAt(row)); } else { outputString.append(" "); } } outputString.append("\n"); } return outputString.toString(); } public static void main(String[] args) { String str = "いろはにほへと\n" + "ちりぬるを\n" + "わかよたれそ\n" + "つねならむ\n" + "うゐのおくやま\n" + "けふこえて\n" + "あさきゆめみし\n" + "へゐもせすん\n"; System.out.println(convert(str)); } }
output:
へあけうつわちい ゐさふゐねかりろ もきこのなよぬは せゆえおらたるに すめてくむれをほ んみ や そ へ し ま と