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

1。概要

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

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

2.カスタムメソッドを使用して文字列をパディングします

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(); }

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

もちろん、別の文字で埋めたい場合は、0の代わりにそれを使用できます

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

2.2。部分文字列の使用

左パディングを行う別の方法は、パディング文字のみを含む目的の長さの文字列作成してからsubstring()メソッドを使用することです。

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.ライブラリを使用して文字列をパディングします

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

3.1。Apache Commons Lang

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

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

 org.apache.commons commons-lang3 3.8.1 

次に、作成したメソッドと同じように、inputString長さを渡します。パディング文字を渡すこともできます。

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

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

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

Apache Commons Lang 3のその他の機能については、入門チュートリアルをご覧ください。StringUtilsクラスを使用した文字列操作の他の方法を確認したい場合は、この記事を参照してください

3.2。Google Guava

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

 com.google.guava guava 27.0-jre 

そして、Stringsクラスを使用します

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

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

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

Guavaライブラリはさらに多くの機能を提供しており、それらの多くをカバーしています。ここでグアバ関連の記事を探すことができます

4.結論

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

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