test

文字列の簡潔な編集方法。

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