Java String Split by "|"

Java String Split by "|"

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 '|' ??

1

1 Answer

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 "|".

4

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.