Understanding the String.split Method in Java

The split method in Java is commonly used to divide strings based on a delimiter. The single-parameter version:

public String[] split(String regex) {
    return split(regex, 0);
}

invokes an overloaded method with a default limit of 0. The underlying implementation:

public String[] split(String regex, int limit) {
    String[] fast = Pattern.fastSplit(regex, this, limit);
    if (fast != null) {
        return fast;
    }
    return Pattern.compile(regex).split(this, limit);
}

handles the splitting logic. The limit parameter controls the number of splits:

  • If positive, splitting occurs up to limit - 1 times.
  • If zero, trailing empty strings are discarded.
  • If negative, all possible splits are retained.

Behavior with limit = 0 (default):

String input = "one,two,three,,";
String[] segments = input.split(",");

for (String segment : segments) {
    System.out.println("Segment: " + segment);
}
System.out.println("Array size: " + segments.length);

Output:

Segment: one
Segment: two
Segment: three
Array size: 3

Trailing empty strings are omitted. Leading and intermediate empty strings remain:

String input = ",,one,two,three";
String[] segments = input.split(",");
// Output includes leading empty strings

Positive limit:

String input = "alpha,beta,gamma,delta";
String[] segments = input.split(",", 3);

for (String segment : segments) {
    System.out.println("Segment: " + segment);
}
System.out.println("Array size: " + segments.length);

Output:

Segment: alpha
Segment: beta
Segment: gamma,delta
Array size: 3

When limit exceeds possible splits, all segments are included.

Negative limit:

String input = "first,second,third,,";
String[] segments = input.split(",", -1);

for (String segment : segments) {
    System.out.println("Segment: " + segment);
}
System.out.println("Array size: " + segments.length);

Output:

Segment: first
Segment: second
Segment: third
Segment: 
Segment: 
Array size: 5

All empty strings are retained. Different negative values (e.g., -1, -2) exhibit identical behaviro in standard implementations.

Tags: java string split regex limit

Posted on Sat, 09 May 2026 00:42:34 +0000 by ketola