Java String Split by "|"

49,024

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

Share:
49,024
Vijay
Author by

Vijay

Updated on July 19, 2022

Comments

  • Vijay
    Vijay almost 2 years

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

  • tckmn
    tckmn about 11 years
    @jahroy FGITW :)
  • Vineet Singla
    Vineet Singla about 11 years
    Perfect, nicest and easiest way.
  • Code-Apprentice
    Code-Apprentice about 11 years
    I saw this question 7 mins too late ;-( Good job GoldenDoorknob!
  • doctorram
    doctorram over 2 years
    It was an unexpected behavior!