/* * 練習問題13.6 p.291 * 区切り文字と、区切り文字間の桁数を指定するパラメータを受け付けるようにメソッドを修正しなさい。 */ /* * 練習問題13.5 p.291 * 10進数を含む文字列を、右から3桁ごとにカンマで区切られた数に変換するメソッドを書きなさい。 * たとえば、文字列"1543729"が与えられたら、そのメソッドは、文字列"1,543,729"を返します。 */ package ch13.ex13_06; public class SplitStringWithComma { // 右から3桁ごとにカンマで区切る static String splitStringWithComma(String str, String delimiter, int delimitLength) { int index = 0; int remainder = str.length() % delimitLength; StringBuilder strbrd = new StringBuilder(str); if (remainder != 0) { index = remainder; } else { index = delimitLength; } // 更新条件: 区切り文字間の長さ + 増えた区切り文字分の文字 for (; index < strbrd.length(); index = index + delimitLength + delimiter.length()) { strbrd.insert(index, delimiter); } return strbrd.toString(); } /** * @param args */ public static void main(String[] args) { System.out.println("123456789: " + splitStringWithComma("123456789", ",", 3)); System.out.println("123456789: " + splitStringWithComma("123456789", "delimiter", 4)); System.out.println("123456789: " + splitStringWithComma("123456789", "<kugiri>", 2)); } }