Question

I am trying to parse some data using Java which is separated by '|' sequence. Below is an example of the data.

String s = "111206|00:00:00|2|64104|58041";
String [] temp = s.split("|");
for(String p: temp)
System.out.println(p);

But instead of splitting at '|' it separates every character separately. Here is the output I get for the above code.

 1
 1
 1
 2
 0
 6
 |
 0
 0
 :
 0
 0
 :
 0
 0
 |
 2
 |
 6
 4
 1
 0
 4
 |
 5
 8
 0
 4
 1

I found a turn around by replacing the '|' by ',' in the line, but the patch of code is going to run many times and I want to optimize it.

 String s = "111206|00:00:00|2|64104|58041";
 s = s.replace('|', ',');

I just want to know what the problem is with '|' ??

Was it helpful?

Solution

You must use:

String [] temp = s.split("\\|");

This is because the split method takes a regular expression, and | is one of the special characters. It means 'or'. That means you are splitting by '' or '', which is just ''. Therefore it will split between every character.

You need two slashes because the first one is for escaping the actual \ in the string, since \ is Java's escape character in a string. Java understands the string like "\|", and the regex then understands it like "|".

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top