ドット、ドル、または疑問符を区切り文字として使用して、Javaで文字列を分割します
この投稿では、ドットを使用してJavaで文字列を分割するさまざまな方法について説明します。 (.)
、パイプ (|)
またはドル ($)
または疑問符 (?)
区切り文字として。
1.使用する String.split()
方法
標準的な解決策は、 split()
によって提供される方法 String
クラス。区切り文字として正規表現を取り、文字列アレイを返します。
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Arrays; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; String[] result = ip.split("."); System.out.println(Arrays.toString(result)); // 出力: [] } } |
上記のコードを実行すると、期待どおりに機能しません。これは、 split()
メソッドは正規表現を取り、ドットは正規表現内の任意の文字と一致する特殊文字です。ドットを表す正規表現を作成することで、この動作を回避できます。これを行うにはいくつかの方法がありますが、以下で詳しく説明します。
⮚エスケープ文字を使用する
ドット文字をエスケープすることで、上記のコードを機能させることができます。エスケープ文字は、文字列の次の文字に対して代替解釈を呼び出します。 Javaでは、 \
(円記号)は、特殊文字をエスケープするために使用されます。 Javaは2つのバックスラッシュエスケープスタイルに従うことに注意してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Arrays; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; String[] result = ip.split("\\."); System.out.println(Arrays.toString(result)); // 出力: [127, 0, 0, 1] } } |
⮚\Qと\Eの間のドットの折り返し
エスケープのもう1つのもっともらしい方法は、 \Q
後続のすべての特殊文字をバックスラッシュし、 \E
式を終了します。
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Arrays; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; String[] result = ip.split("\\Q.\\E"); System.out.println(Arrays.toString(result)); // 出力: [127, 0, 0, 1] } } |
⮚ Character
Class
使用することもできます Character
ドットをエスケープするためのJavaのクラス (.)
、以下に示すように:
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Arrays; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; String[] result = ip.split("[.]"); System.out.println(Arrays.toString(result)); // 出力: [127, 0, 0, 1] } } |
⮚ Pattern.quote()
別の良い代替手段は、 Pattern.quote()
、指定された文字列のリテラルパターン文字列を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Arrays; import java.util.regex.Pattern; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; String[] result = ip.split(Pattern.quote(".")); System.out.println(Arrays.toString(result)); // 出力: [127, 0, 0, 1] } } |
2.Guavaを使用する Splitter
Class
使用できます Splitter
以下に示すように、Guavaライブラリのクラス。 Iterable
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import com.google.common.base.Splitter; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; Iterable<String> result = Splitter.on(".").split(ip); System.out.println(result); // 出力: [127, 0, 0, 1] } } |
3. ApacheCommonsLangの使用
また、 StringUtils.split()
指定された区切り文字を使用して文字列をアレイに分割するApacheCommonsLangライブラリのメソッド。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import org.apache.commons.lang3.StringUtils; import java.util.Arrays; class Main { public static void main(String[] args) { String ip = "AB.X.Y"; String[] result = StringUtils.split(ip, "."); System.out.println(Arrays.toString(result)); // 出力: [127, 0, 0, 1] } } |
4.使用する StringTokenizer
Class
The StringTokenizer
以下に示すように、区切り文字を使用して文字列をトークンに分割できるレガシークラスです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; class Main { public static void main(String[] args) { String ip = "127.0.0.1"; StringTokenizer st = new StringTokenizer(ip, "."); List<String> result = new ArrayList<>(); while (st.hasMoreTokens()) { result.add(st.nextToken()); } System.out.println(result); // 出力: [127, 0, 0, 1] } } |
これで、ドット、ドル、または疑問符を区切り文字として使用してJava文字列を分割できます。