Javaでゼロまたはスペースで文字列を埋める

Javaで文字列にゼロまたはスペースを埋め込む

1. 概要

この短いチュートリアルでは、JavaでStringを埋める方法を説明します。 主に左側のパッドに焦点を当てます。つまり、目的の長さに達するまで、先頭のスペースまたはゼロを追加します。

右に埋め込まれたStringのアプローチは非常に似ているため、違いのみを指摘します。

2. カスタムメソッドを使用してStringを埋める

JavaのStringクラスは、パディングに便利なメソッドを提供しないため、独自にいくつかのメソッドを作成しましょう。 ただし、最初に、いくつかの期待を設定しましょう。

assertEquals("    123456", padLeftZeros("123456", 10));
assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. StringBuilderの使用

これは、StringBuilderといくつかの手続き型ロジックで実現できます。

public String padLeftZeros(String inputString, int length) {
    if (inputString.length() >= length) {
        return inputString;
    }
    StringBuilder sb = new StringBuilder();
    while (sb.length() < length - inputString.length()) {
        sb.append('0');
    }
    sb.append(inputString);

    return sb.toString();
}

ここで、元のテキストの長さが目的の長さ以上の場合、変更されていないバージョンのテキストが返されることがわかります。 それ以外の場合は、スペースで始まる新しいString, を作成し、元のString, を追加します。

もちろん、 別の文字で埋めると、0の代わりに使用できます。

同様に、右パッドを使用する場合は、代わりにnewStringBuilder(inputString)を実行してから、最後にスペースを追加する必要があります。

2.2. substringの使用

左パディングを行う別の方法は、create a String with the desired length that contains only pad characters and then use the substring() methodです。

StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
    sb.append(' ');
}

return sb.substring(inputString.length()) + inputString;

2.3. String.formatの使用

そして最後に、Java 5以降、String.format()を使用できます。

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

デフォルトでは、パディング操作はスペースを使用して実行されることに注意してください。 これが、ゼロやその他の文字で埋める場合にreplace()メソッドを使用する必要がある理由です。

右側のパッドには、別のフラグを使用する必要があります:%1$-

3. ライブラリを使用してStringを埋める

また、パディング機能を既に提供している外部ライブラリがあります。

3.1. アパッチコモンズラング

Apache Commons Langは、Javaユーティリティクラスのパッケージを提供します。 最も人気のあるものの1つは、StringUtilsです。

これを使用するには、pom.xmlファイルにits dependencyを追加して、プロジェクトに含める必要があります。


    org.apache.commons
    commons-lang3
    3.8.1

And then we pass the inputString and the length, just like the methods we created.パディング文字を渡すこともできます。

assertEquals("    123456", StringUtils.leftPad("123456", 10));
assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

繰り返しますが、Stringはデフォルトでスペースで埋められます。そうでない場合は、別の埋め込み文字を明示的に設定する必要があります。

対応するrightPad()メソッドもあります。

To explore more features of the Apache Commons Lang 3, you can check out our introductory tutorial.other ways of the String manipulation using the StringUtils class, please refer to this articleを見たい場合。

3.2. Google Guava

使用できるもう1つのライブラリは、GoogleのGuavaです。 もちろん、最初にits dependencyを追加してプロジェクトに追加する必要があります。


    com.google.guava
    guava
    27.0-jre

And then use the Strings class

assertEquals("    123456", Strings.padStart("123456", 10, ' '));
assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

このメソッドにはデフォルトのパッド文字がないため、毎回渡す必要があります。

右パッドには、padEnd()メソッドを使用できます。

The Guava library offers much more features and we have covered a lot of them. You can look here for the Guava related articles

4. 結論

この簡単な記事では、JavaでStringを埋める方法を説明しました。 独自の実装または既存のライブラリを使用して例を提示しました。

いつものように、完全なソースコードはover on GitHubにあります。