Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】文字列の先頭ゼロ(先行ゼロ)を削除するプログラムの書き方


この記事では、Javaで文字列の先頭にあるゼロ(先行ゼロ)を削除する方法について解説します。先頭にゼロが並んだ文字列は、シンプルな反復処理と置換処理を組み合わせることで、簡単に取り除くことができます。

以下に具体的な実行例を示します。

入力:

Input string: 00000445566

期待される出力:

Result: 445566

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 文字列型変数 input_string と StringBuffer オブジェクト string_buffer を宣言する
ステップ3 - 値を定義する
ステップ4 - whileループで文字列の各文字を先頭から順に走査し、replace() メソッドを使って先頭のゼロを ""(空文字列)に置き換える
ステップ5 - 結果を表示する
ステップ6 - 処理を終了する

例1:mainメソッドにすべての処理を記述する場合

ここでは、すべての処理を main メソッドの中にまとめて記述しています。

import java.util.Arrays;
import java.util.List;
public class RemoveZero {
    public static void main (String[] args) {
        System.out.println("必要なパッケージがインポートされました");
        String input_string = "00000445566";
        System.out.println("\n定義された文字列: " + input_string);
        int i = 0;
        while (i < input_string.length() && input_string.charAt(i) == '0')
            i++;
        StringBuffer string_buffer = new StringBuffer(input_string);
        string_buffer.replace(0, i, "");
        input_string = string_buffer.toString();
        System.out.println(input_string);
    }
}

出力

必要なパッケージがインポートされました

定義された文字列: 00000445566
445566

例2:オブジェクト指向スタイルでメソッドに分割する場合

ここでは、先頭ゼロを削除する処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングの形式で実装しています。このように分割することで、コードの再利用性が高まります。

import java.util.Arrays;
import java.util.List;
public class RemoveZero {
    public static String remove_zero(String input_string) {
        int i = 0;
        while (i < input_string.length() && input_string.charAt(i) == '0')
            i++;
        StringBuffer string_buffer = new StringBuffer(input_string);
        string_buffer.replace(0, i, "");
        return string_buffer.toString();
    }
    public static void main (String[] args) {
        System.out.println("必要なパッケージがインポートされました");
        String input_string = "00000445566";
        System.out.println("\n定義された文字列: " + input_string);
        input_string = remove_zero(input_string);
        System.out.println(input_string);
    }
}

出力

必要なパッケージがインポートされました

定義された文字列: 00000445566
445566

補足:より簡潔に書ける代替手法

上記のループ処理以外にも、先頭ゼロを削除する方法はいくつかあります。用途に応じて使い分けるとよいでしょう。

1. 正規表現を使う方法

String result = input_string.replaceAll("^0+", "");

「^0+」は「文字列の先頭に連続するゼロ」を表す正規表現です。これを空文字列に置き換えることで、わずか一行で処理が完結します。最も簡潔な記述方法です。

2. substring() を使う方法

int index = 0;
while (index < input_string.length() && input_string.charAt(index) == '0') {
    index++;
}
String result = input_string.substring(index);

先頭から順に走査して、ゼロ以外の文字が最初に現れる位置を特定し、その位置以降の部分文字列を切り出すシンプルな手法です。中間オブジェクトを作らずに済むため効率的です。

まとめ

Javaで文字列の先頭ゼロを削除する基本は、「whileループで先頭のゼロの個数を数え、StringBuffer の replace() メソッドで置き換える」という流れです。処理をメソッドとして分離すれば再利用性が向上し、正規表現を活用すればコードを大幅に簡潔にできます。可読性・パフォーマンス・保守性のバランスを考慮して、プロジェクトに適した方法を選択してください。

  1. Pythonで文字列の先頭にゼロを追加する方法|format()とrjust()の使い方

    Pythonでは、データを見やすく整形したり、固定桁数の値を計算の入力として扱いたい場合などに、文字列の先頭へゼロ(先行ゼロ/ゼロパディング)を付け加えたいことがあります。本記事では、そのような場面で役立つ代表的な2つの方法「format()」と「rjust()」を、具体的なコード例とともに解説します。format()メソッドを使う方法まずはformat()関数を使う方法です。ここではpandasのDataFrameを用意し、ゼロを追加したい列に対してformat関数を適用します。lambda式を組み合わせることで、列内のすべての要素に同じ処理を繰り返し適用できます。コード例import pa

  2. PythonでIPアドレスの先頭ゼロを削除する方法を解説

    このチュートリアルでは、IPアドレスから先頭の余分なゼロ(先行ゼロ)を削除するPythonプログラムを作成します。具体的には、255.001.040.001 のようなIPアドレスを 255.1.40.1 の形式に変換する処理を実装していきます。 処理の流れ 以下の手順に沿ってプログラムを組み立てます。 対象となるIPアドレスを文字列として初期化する split() 関数を使い、ピリオド(.)でIPアドレスを分割する 分割した各部分を int 型に変換する(数値化することで先頭のゼロが自動的に除去される) 結合できるように、各部分を再び str 型に戻す join() メソッドですべての部分を