Splitting string with pipe character ("|") [duplicate] Splitting string with pipe character ("|") [duplicate] java java

Splitting string with pipe character ("|") [duplicate]


| is a metacharacter in regex. You'd need to escape it:

String[] value_split = rat_values.split("\\|");


Using Pattern.quote()

String[] value_split = rat_values.split(Pattern.quote("|"));//System.out.println(Arrays.toString(rat_values.split(Pattern.quote("|")))); //(FOR GETTING OUTPUT)

Using Escape characters(for metacharacters)

String[] value_split = rat_values.split("\\|");//System.out.println(Arrays.toString(rat_values.split("\\|"))); //(FOR GETTING OUTPUT)

Using StringTokenizer(For avoiding regular expression issues)

public static String[] splitUsingTokenizer(String Subject, String Delimiters) {     StringTokenizer StrTkn = new StringTokenizer(Subject, Delimiters);     ArrayList<String> ArrLis = new ArrayList<String>(Subject.length());     while(StrTkn.hasMoreTokens())     {       ArrLis.add(StrTkn.nextToken());     }     return ArrLis.toArray(new String[0]);}

Using Pattern class(java.util.regex.Pattern)

Arrays.asList(Pattern.compile("\\|").split(rat_values))//System.out.println(Arrays.asList(Pattern.compile("\\|").split(rat_values))); //(FOR GETTING OUTPUT)

Output

[Food 1 ,  Service 3 ,  Atmosphere 3 ,  Value for money 1 ]


Or.. Pattern#quote:

String[] value_split = rat_values.split(Pattern.quote("|"));

This is happening because String#split accepts a regex:

| has a special meaning in regex.

quote will return a String representation for the regex.