文字列の簡潔な編集方法。
String#substringやString#indexOfを駆使せず、簡単に文字列の編集ができてしまう。
文字列連結はやめて、String.formatを使ってみよう。
典型的な使用例
置換したい部分に"%s"を埋めておき、第2引数以降に置換する文字列を指定していく。
public class Main { public static void main(String[] args){ System.out.println(String.format("こんにちは!%sの%sさん","営業","田中")); } }
実行結果
こんにちは!営業の田中さん
何番目の引数と置換するか指定
"%"に続けて1$、2$、3$・・・と指定することで、「何番目の引数を置換するか」を指定できる。
public class Main { public static void main(String[] args){ System.out.println(String.format("%3$s!%2$sの%1$sさん","田中","営業","こんにちは")); } }
実行結果
こんにちは!営業の田中さん
スペース埋め
"%"に続けて文字列数を指定することでスペース埋めができる。
マイナス値だと、左詰めになる。
public class Main { public static void main(String[] args){ System.out.println(String.format("|%4s|%-4s|","りんご","すいか")); } }
実行結果
| りんご|すいか |
数字で置換(10、8、16進数)
数値を"%d"、"%o"、"%x"で指定することで数値を置換できる。
"%d"・・・10進数
"%o"・・・8進数
"%x"・・・16進数
public class Main { public static void main(String[] args){ //10進数で表示 System.out.println(String.format("%d", 123)); //8進数で表示 System.out.println(String.format("%o", 123)); //16進数で表示 System.out.println(String.format("%x", 123)); } }
実行結果
123 173 7b
数値の0埋め
"%0"に続けて桁数を指定することで0埋めすることができる。
public class Main { public static void main(String[] args){ //0埋めで4桁の数値に変換 System.out.println(String.format("%04d", 123)); //0埋めで5桁の数値に変換 System.out.println(String.format("%05d", 123)); } }
実行結果
0123 00123
数値を符号付きで表示
"%d"の間に"+","-"をつけることで表示できる。
public class Main { public static void main(String[] args) { //数値を符号付きで表示(+) System.out.println(String.format("%+d", 12345)); //数値を符号付きで表示(-) System.out.println(String.format("%+d", -12345)); } }
実行結果
+12345 -12345
数値をカンマ区切りで表示
"%d"の間に","をつけることで表示できる。
public class Main { public static void main(String[] args) { //カンマ区切りで表示 System.out.println(String.format("%,d", 123456789)); } }
実行結果
123,456,789
日付の指定
SimpleDateFormatほど豊富ではないが、日付の変換も可能
- 日付のフォーマットも指定可能
- tY(年(4桁))
- tm(月(2桁))
- td(日(2桁))
- tH(時(2桁))
- tM(分(2桁))
- tS(秒(2桁))
- tL(ミリ秒(3桁))
- tD(日付(%tm/%td/%ty))
- tF(日付(%tY-%tm-%td))
- tT(時刻(%tH:%tM:%tS)
import java.util.Date; public class Main { public static void main(String[] args){ //年(4桁) System.out.println("%tY: " + String.format("%tY", new Date())); //月(2桁。0埋め) System.out.println("%tm: " + String.format("%tm", new Date())); //日(2桁。0埋め) System.out.println("%td: " + String.format("%td", new Date())); //時(2桁。0埋め) System.out.println("%tH: " + String.format("%tH", new Date())); //分(2桁。0埋め) System.out.println("%tM: " + String.format("%tM", new Date())); //分(2桁。0埋め) System.out.println("%tS: " + String.format("%tS", new Date())); //秒(2桁。0埋め) System.out.println("%tL: " + String.format("%tL", new Date())); //日付(%tm/%td/%tyと同義) System.out.println("%tD: " + String.format("%tD", new Date())); //日付(%tY-%tm-%tdと同義) System.out.println("%tF: " + String.format("%tF", new Date())); //時刻(%tH:%tM:%tSと同義) System.out.println("%tT: " + String.format("%tT", new Date())); } }
実行結果
%tY: 2015 %tm: 09 %td: 26 %tH: 20 %tM: 46 %tS: 38 %tL: 846 %tD: 09/26/15 %tF: 2015-09-26 %tT: 20:46:38