文字列の簡潔な編集方法。
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