Java 文字列のsplit()メソッドの例

⚡ スマートサマリー

文字列を分割する Java split() メソッドを使用すると、区切り文字が一致する箇所でテキストを分割し、分割された部分を文字列配列として返します。オプションの limit 引数で、生成される分割数に上限を設定でき、残りの部分はそのまま保持されます。

  • 🧩 戻り値の型: split() は String[] を返し、単一の String を返すことはありません。そのため、結果を配列に代入する必要があります。
  • 🔤 区切り文字は正規表現です: 引数は正規表現なので、ドットやパイプなどの文字はエスケープする必要があります。ping.
  • 🔢 制限論証: 制限値の3を超えると、2つの分割された部分が生成され、残りのテキストが最終要素として保持されます。
  • 空白パターン: パターン「\\s」は任意の1つの空白文字に一致し、文を単語に分割します。
  • 🕳️ 末尾の空白文字: 負の制限値が指定されていない限り、末尾の空のフィールドは破棄されます。
  • 🔁 閲覧結果: 配列の長さに対して標準的なforループを使用すると、各要素が順番に出力されます。

Java 文字列のsplit() メソッド

split()文字列とは何か Java?

その split() メソッドを使用すると、 string 特定の Java 文字列の区切り文字。多くの場合、区切り文字はスペースまたはカンマ(,)で、文字列を分割したい位置を指定します。

split() 関数の構文

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ 戻り値の型に関する注意: split() を返す String[] 配列、一つもない String結果をプレーンテキストに割り当てます String 変数がコンパイルに失敗し、型が互換性がないというエラーが発生します。これは、このメソッドを使用する初心者が最もよく犯す間違いです。

  • 正規表現: テキストまたは文字列に適用される正規表現。
  • 制限: 結果として得られる配列に含まれる値の最大数。省略した場合、または0の場合は、正規表現に一致するすべての部分文字列が返されます。

文字列を分割する方法 Java 区切り文字付き

以下の例は、文字列を分割する方法を示しています。 Java 区切り文字付き。

という名前の文字列変数があるとします。 strMain アルファ、ベータ、ガンマ、 Delta、シグマ — すべてコンマ (,) で区切られます。

 文字列を分割する Java

ここで、すべての個別の文字列が必要な場合、考えられる最良のパターンは、カンマに基づいて文字列を分割することです。 したがって、次のように XNUMX つの個別の文字列を取得します。

  • アルファ
  • ベータ
  • ガンマ
  • Delta
  • シグマ

文字列を使用する split 方法 Java 分割する必要のある文字列に対して、区切り文字を引数として指定します。

この中の Java 区切り文字で文字列を分割します。区切り文字はカンマ(,)で、 Java 文字列をコンマ操作で分割すると、配列が分割されます。

class StrSplit{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit = strMain.split(", ");
    for (int i=0; i < arrSplit.length; i++)
    {
      System.out.println(arrSplit[i]);
    }
  }
}

コード内のループは、それぞれを印刷するだけです Java 配列からsplit関数の後に文字列を分割します Java以下に示すように。

期待される出力:

Alpha
Beta
Delta
Gamma
Sigma

例: Java 正規表現と長さを使った文字列のsplit()メソッド

分割関数の後の最初の「n」個の要素のみが必要な状況を考えてみましょう。 Javaただし、文字列の残りの部分はそのままにしておきたい。出力は次のようになる。

  1. アルファ
  2. ベータ
  3. Delta、ガンマ、シグマ

これは、split() 操作に別の引数を渡すことで実現できます。 Javaそして、それが必要な文字列の上限となります。

split メソッドの以下のコードを検討してください。 Java:

class StrSplit2{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit_2 = strMain.split(", ", 3);
    for (int i=0; i < arrSplit_2.length; i++){
      System.out.println(arrSplit_2[i]);
    }
  }
}

期待される出力:

Alpha
Beta
Delta, Gamma, Sigma

制限値を3に設定すると、要素が正確に3つ生成されることに注意してください。最初の2つの区切り文字は尊重され、2番目の区切り文字以降のすべてが3番目の要素としてまとめられます。

文字列を分割する方法 Java スペース

文字列をスペースで分割したい場合を考えてみましょう。ここに分割された文字列があります。 Java 変数 命名 strMain いくつかの単語で構成されています。 ようこそ! Guru99.

public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
    for (int i=0; i < arrSplit_3.length; i++){
      System.out.println(arrSplit_3[i]);
    }
  }
}

期待される出力:

Welcome
to
Guru99

パターン \\s 単一の空白文字に一致します。 \\s+ 単語が複数のスペースで区切られる場合のみ、そうでない場合は余分なスペースごとに空の要素が生成されます。

分割時に空の文字列を保持する方法 Java

行動の一つ split() 初めて出会ったほとんどの人を驚かせる:余計な空文字列は静かに捨て去られる。 "a,b,," カンマで区切ると、4 個ではなく 2 個の要素が返されます。これは、デフォルトの制限がゼロであるため、配列の末尾にある空のフィールドがすべて破棄されるためです。

これは、データが位置情報を持つ場合に特に重要になります。例えば、CSVファイルの行では、末尾の欠損値があっても列が占有されます。これらの空白が削除されると、下流のすべてのインデックスがずれてしまいます。

通過する 制限によってそれらを維持する:

String row = "Alpha,Beta,,";

// Default: trailing empty fields removed -> length 2
String[] a = row.split(",");
System.out.println(a.length);        // prints 2

// Negative limit: every field preserved -> length 4
String[] b = row.split(",", -1);
System.out.println(b.length);        // prints 4

3つのルールはすべてのケースを網羅しています。 ゼロ(デフォルト)は、パターンを可能な限り多く適用し、その後末尾の空文字列を削除します。 正の limit はパターンを最大で limit マイナス 1 回適用するため、最後の要素には変更されていない残りの値が格納されます。これは、limit が 3 の場合の前の例では示したとおりです。 limit は、パターンを可能な限り多く適用し、末尾のフィールドも含め、すべての空のフィールドを保持します。

先頭の空文字列は、また異なる動作をします: 分割 ",a,b" 制限に関係なく、常に最初の要素が空になります。これは、パターンが位置0で一致するためです。これを防ぐには、入力をトリミングするか、結果をフィルタリングしてください。 配列 使用前に。

split()、StringTokenizer、Pattern.split():どれを使うべきか

Java 文字列を分割する方法は3つあります。それぞれ異なるのは、受け入れる区切り文字の種類、戻り値、そしてパターンが一度コンパイルされるか、呼び出しごとに再コンパイルされるかという点です。ループ内で分割が行われる場合、この点が重要になります。

側面 String.split() 文字列トークナイザー パターン.split()
デリミタ 正規表現 単一文字のセット 正規表現
返品 String [] 列挙によるトークン String []
パターンコンパイル済み すべての通話で 適用されない 一度使用した後、再利用
空き地を維持する 負の制限のみ 期限なし 負の制限のみ
ステータス おすすめ 互換性のために残されたレガシー ループ再生を推奨

  String.split() 通常の単発作業には、最も短く記述でき、読みやすいので、これを使用します。 Pattern.compile(",").split(text) ループ内で分割する場合、正規表現は各イテレーションごとではなく、一度だけコンパイルされるため、避けてください。 StringTokenizer 新しいコードでは、これは後方互換性のためにのみ残されています。

コマンドと Java split() のエラーとその修正方法

ほぼすべての問題 split() trac原因は2つ考えられます。引数がリテラル文字列ではなく正規表現である場合、または上記の制限ルールによってフィールドが予期せず破棄されている場合です。以下の各エラーには、その症状と解決策が示されています。

  • ドットで分割すると、空の配列が返されます。 "1.2.3".split(".") ドットは正規表現のワイルドカードなので、すべての文字に一致します。エスケープして次のようにします。 split("\\.").
  • パイプの分割動作が奇妙な挙動を示す: パイプは正規表現における交替を意味します。エスケープするには、 split("\\|").
  • 互換性のない型エラー: 結果は String変数を次のように宣言します。 String[].
  • 予期しない最初の要素が空です。 区切り文字が入力文字列の先頭に現れます。まず文字列をトリミングしてください。
  • 末尾の欠損値: 末尾の空のフィールドは、デフォルトの制限により破棄されました。 -1 XNUMX 番目の引数として。
  • NullPointerException: split() null参照に対してメソッドが呼び出されました。分割する前にnullチェックを行ってください。このメソッドはnullを処理できません。

よくあるご質問

文字クラスを使用します。 split("[,;]")これは、コンマまたはセミコロンで区切られます。代替も機能します。 split(",|;").

はい。配列をラップします Arrays.asList(text.split(",")) 固定サイズの表示の場合、または new ArrayList<>(Arrays.asList(...)) 後でリストを修正する必要がある場合。

Yes. AI このツールは、指定されたフォーマットから動作パターンを生成し、各トークンを説明します。結果を信頼する前に、空のフィールドや引用符で囲まれた値などの例外的なケースに対してテストを行ってください。

AIアシスタントは、予期しない配列長の原因として考えられる3つの要因、すなわちエスケープされていないメタ文字、破棄された末尾フィールド、または先頭の区切り文字のどれが原因であるかを特定します。

単純なデータのみに対応しています。引用符で囲まれたフィールド内のカンマや埋め込み改行を処理できないため、実際のファイルには専用のCSVライブラリを使用する方が安全です。1行ずつ読み込むには、 Bufferエドリーダー このようなライブラリと相性が良い。