英数字テキストの先頭のゼロを削除するにはどうすればいいですか? 質問する

英数字テキストの先頭のゼロを削除するにはどうすればいいですか? 質問する

SO で、先頭にゼロを付ける方法に関する質問を見たことがあります。しかし、その逆はありません。

英数字テキストの先頭のゼロを削除する方法を教えてください。組み込み API はありますか、それとも先頭のゼロを削除するメソッドを記述する必要がありますか?

例:

01234 converts to 1234
0001234a converts to 1234a
001234-a converts to 1234-a
101234 remains as 101234
2509398 remains as 2509398
123z remains as 123z
000002829839 converts to 2829839

ベストアンサー1

正規表現は、この作業に最適なツールです。正規表現が何であるかは、問題の仕様によって異なります。次の例では、先頭のゼロを削除しますが、必要に応じて 1 つ残します (つまり、単に"0"空の文字列になることはありません)。

s.replaceFirst("^0+(?!$)", "")

アンカーは、一致対象が入力の先頭にある^ことを確認します。否定の先読みにより、文字列全体が一致しないことが保証されます。0+(?!$)

テストハーネス:

String[] in = {
    "01234",         // "[1234]"
    "0001234a",      // "[1234a]"
    "101234",        // "[101234]"
    "000002829839",  // "[2829839]"
    "0",             // "[0]"
    "0000000",       // "[0]"
    "0000009",       // "[9]"
    "000000z",       // "[z]"
    "000000.z",      // "[.z]"
};
for (String s : in) {
    System.out.println("[" + s.replaceFirst("^0+(?!$)", "") + "]");
}

参照

おすすめ記事