Javaで文字列を分割するにはどうすればいいですか? 質問する

Javaで文字列を分割するにはどうすればいいですか? 質問する

区切り文字を使用して文字列を分割したい、たとえば"004-034556"区切り文字で 2 つの別々の文字列に分割したい"-":

part1 = "004";
part2 = "034556";

つまり、最初の文字列には の前の文字が含まれ'-'、2 番目の文字列には の後の文字が含まれます'-'

また、文字列に区切り文字 ( ) が含まれているかどうかも確認します'-'

ベストアンサー1

適切な名前のメソッドを使用するString#split()

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

split引数は、正規表現逃げることを忘れないように特殊文字必要であれば。

そこには特別な意味を持つ 12 個の文字があります: バックスラッシュ\、キャレット^、ドル記号$、ピリオドまたはドット.、縦棒またはパイプ記号|、疑問符?、アスタリスクまたは星*、プラス記号+、開き括弧(、閉じ括弧、)開き角括弧、[開き中括弧{。これらの特殊文字は、しばしば「メタ文字」と呼ばれます。

たとえば、ピリオド/ドット.(「任意の文字正規表現で「」を使用する場合は、バックスラッシュ\個々の特殊文字を次のようにエスケープするsplit("\\.")か、文字クラス[]のようにリテラル文字を表すにはsplit("[.]")、またはPattern#quote()文字列全体を次のようにエスケープしますsplit(Pattern.quote("."))

String[] parts = string.split(Pattern.quote(".")); // Split on the exact string.

文字列に特定の文字が含まれているかどうかを事前にテストするには、次のようにします。String#contains()

if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

注意: これは正規表現を受け付けません。正規表現を使用する場合は、String#matches()その代わり。

分割された文字を結果部分で保持したい場合は、ポジティブな見方分割された文字を左側に置きたい場合は、?<=パターンの前にグループを付けて、肯定的な後読みを使用します。

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556

分割された文字を右側に置きたい場合は、?=パターンの前にグループを付けて、肯定的な先読みを使用します。

String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556

結果のパーツの数を制限したい場合は、split()メソッドの 2 番目の引数として必要な数を指定できます。

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42

おすすめ記事