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 - 1times. - 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.