I\'m processing a string which is tab delimited. I\'m accomplishing this using the split
function, and it works in most situations. The problem occurs when a f
Well nobody answered - which is in part the fault of the question : the input string contains eleven fields (this much can be inferred) but how many tabs ? Most possibly exactly 10. Then the answer is
String s = "\t2\t\t4\t5\t6\t\t8\t\t10\t";
String[] fields = s.split("\t", -1); // in your case s.split("\t", 11) might also do
for (int i = 0; i < fields.length; ++i) {
if ("".equals(fields[i])) fields[i] = null;
}
System.out.println(Arrays.asList(fields));
// [null, 2, null, 4, 5, 6, null, 8, null, 10, null]
// with s.split("\t") : [null, 2, null, 4, 5, 6, null, 8, null, 10]
If the fields happen to contain tabs this won't work as expected, of course.
The -1
means : apply the pattern as many times as needed - so trailing fields (the 11th) will be preserved (as empty strings (""
) if absent, which need to be turned to null
explicitly).
If on the other hand there are no tabs for the missing fields - so "5\t6"
is a valid input string containing the fields 5,6 only - there is no way to get the fields[]
via split.