Reputation: 3650
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 '|' ??
Upvotes: 47
Views: 93720
Reputation: 59283
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 "|
".
Upvotes: 125