Java の文字列フォーマット

JavaBeginner
オンラインで実践に進む

はじめに

Java では、String.format() メソッドを使用すると、書式指定文字列、ロケール、および引数の組み合わせを使って文字列をフォーマットできます。書式指定文字列は、引数を変換する形式を指定し、ロケールは言語や地域などの設定を指定します。この実験では、String.format() メソッドを使って文字列をフォーマットする方法についてさらに学びます。

単純な文字列フォーマットの例を作成する

このステップでは、String.format() メソッドを使って文字列をフォーマットする基本的な例を作成します。

  1. ~/project ディレクトリに SimpleFormatExample.java という名前の新しい Java ファイルを作成します。
  2. SimpleFormatExample クラスの main() メソッドで、formattedString という名前の文字列変数を作成し、次の引数で String.format() を呼び出した結果に等しく設定します。
    1. 書式指定文字列として "Hello, %s!" という文字列を指定します。
    2. 引数として "world" という文字列を指定します。
  3. System.out.println() を使って formattedString の値を出力します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下がコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("Hello, %s!", "world");
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

Hello, world!

フォーマット文字列で引数を使用する

このステップでは、出力をカスタマイズするためにフォーマット文字列に引数をどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. 表示する文字数の引数を使うように formattedString 変数を変更します。フォーマット文字列の "s"".%d-s" に置き換えて、表示する最大文字数を指定します。
  3. 表示する最大文字数を表す整数型の引数をフォーマット文字列の後に追加します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("Hello, %d-s!", 5);
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

Hello, 5-s!

フォーマットの動作を変更するためのフラグの使用

このステップでは、フォーマット文字列を変更するためにフラグをどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. % 記号の後にマイナス記号 (-) を追加することで、文字列を左寄せにするようにフォーマット文字列を変更します。
  3. 出力の最小幅を指定するために、フォーマット文字列に引数を追加します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("%-10s, world!", "Hello");
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

Hello    , world!

さまざまなデータ型をフォーマットするための変換文字の使用

このステップでは、さまざまなデータ型をフォーマットするために異なる変換文字をどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. %f 変換文字を使用して浮動小数点数を含むようにフォーマット文字列を変更します。
  3. フォーマット文字列の後に浮動小数点数の引数を追加します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("The value of pi is approximately %f", 3.14159265359);
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

The value of pi is approximately 3.141593

桁数を制御するための精度修飾子の使用

このステップでは、フォーマットされた出力に表示される桁数を制御するために精度修飾子をどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. %f 変換文字を使用して浮動小数点数を含むようにフォーマット文字列を変更します。小数点以下 2 桁のみ表示するように精度修飾子 (%.2f) を追加します。
  3. フォーマット文字列の後に浮動小数点数の引数を追加します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("The value of pi is approximately %.2f", 3.14159265359);
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

The value of pi is approximately 3.14

書式設定の設定をカスタマイズするためのロケールの使用

このステップでは、言語や地域などのフォーマット設定をカスタマイズするためにロケールをどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. フォーマット文字列を変更して、数字を含め、%d 変換文字を使用します。
  3. フォーマット文字列の後に整数型の引数を追加します。
  4. String.format() メソッドに 2 番目の引数を追加して、使用するロケールを指定します。フランス語を指定するには Locale.FRENCH 定数を使用します。
  5. SimpleFormatExample.java ファイルを保存して閉じます。
  6. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  7. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

import java.util.Locale;

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format(Locale.FRENCH, "Le nombre est %d", 123456789);
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

Le nombre est 123456789

日付と時刻の値の書式設定

このステップでは、String.format() メソッドを使って日付と時刻の値をフォーマットする方法を学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. 日付インスタンスを作成するために使用する java.util.Calendar クラスのインポート文を追加します。
  3. Calendar.getInstance() を使って新しい Calendar インスタンスを作成します。
  4. %tD 変換文字を使って日付を含むようにフォーマット文字列を変更します。
  5. calendar.getTime() メソッドを使って Date 値を取得し、フォーマット文字列の後に Date 引数を追加します。
  6. SimpleFormatExample.java ファイルを保存して閉じます。
  7. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  8. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

import java.util.Calendar;
import java.util.Date;

public class SimpleFormatExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        String formattedString = String.format("%tD", calendar.getTime());
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

08/22/21

大文字と小文字を使った書式設定

このステップでは、それぞれ大文字と小文字で文字列をフォーマットするために %S%s 変換文字をどのように使用するかを学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. 大文字で文字列をフォーマットするために %S 変換文字を使って、フォーマット文字列を変更して文字列を含めます。
  3. 小文字で文字列をフォーマットするために %s 変換文字を使って、2 番目の文字列を含めるようにフォーマット文字列を変更します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        String formattedString = String.format("The word %S is in uppercase and %s is in lowercase", "HELLO", "world");
        System.out.println(formattedString);
    }
}

コードを実行すると、次の出力が表示されるはずです。

The word HELLO is in uppercase and world is in lowercase

例外の処理

このステップでは、String.format() メソッドを使用する際にスローされる可能性のある例外と、それらを処理する方法について学びます。

  1. エディタで SimpleFormatExample.java ファイルを開きます。
  2. %c 変換文字を使用して文字を含むようにフォーマット文字列を変更します。
  3. フォーマット文字列の後に文字引数を追加します。
  4. SimpleFormatExample.java ファイルを保存して閉じます。
  5. ターミナルで、次のコマンドを実行して SimpleFormatExample.java ファイルをコンパイルします。javac SimpleFormatExample.java
  6. 次に、java SimpleFormatExample というコマンドを使ってクラスファイルを実行します。

以下が修正後のコードです。

public class SimpleFormatExample {
    public static void main(String[] args) {
        try {
            String formattedString = String.format("The character is %c", "too long");
            System.out.println(formattedString);
        } catch (Exception e) {
            System.out.println("An exception occurred: " + e.getMessage());
        }
    }
}

コードを実行すると、次の出力が表示されるはずです。

An exception occurred: UString.format: '%c'!= java.base/java.lang.String

まとめ

この実験では、Java において String.format() メソッドを使って文字列をフォーマットする方法を学びました。まず、フォーマット文字列を使って文字列を生成する簡単な例を作成しました。次に、異なる変換文字を使って文字列をフォーマットする方法と、出力を制御するための精度修飾子とフラグについて学びました。また、ロケールを使ってフォーマット設定をカスタマイズする方法と、日付と時刻の値をフォーマットする方法についても学びました。最後に、String.format() メソッドを使用する際にスローされる可能性のあるいくつかの例外とそれらを処理する方法について議論しました。