Divide string by | (pipe) in Java

I have the following text: ARIYALUR:ARIYALUR|CHENNAI:CHENNAI|COIMBATORE:COIMBATORE|CUDDALORE:CUDDALORE|DINDIGUL:DINDIGUL|ERODE:ERODE|KANCHEEPURAM:KANCHEEPURAM|KANYAKUMARI:KANYAKUMARI|KRISHNAGIRI:KRISHNAGIRI|MADURAI:MADURAI|NAMAKKAL:NAMAKKAL|NILGIRIS:NILGIRIS|PERAMBALUR:PERAMBALUR|PONDICHERRY:PONDICHERRY|SALEM:SALEM|THANJAVUR:THANJAVUR|THENI:THENI|THIRUVALLUR:THIRUVALLUR|THOOTHUKUDI:THOOTHUKUDI|TIRUNELVELI:TIRUNELVELI|VELLORE:VELLORE|VILLUPURAM:VILLUPURAM|VIRUDHUNAGAR:VIRUDHUNAGAR|

I tried to do split("|") , but my array consists of individual characters, not for each county.

+4
source share
3 answers

| - a special character in regular expression. Use \\| instead .

I will explain why I added 2 slashes. To exit | I need to \| . However, to represent the string \| requires "\\|" , because \ itself must be escaped laterally in the string.

And, as xagyg pointed out in a comment, split will treat the parameter as a regular expression. This will not be considered a simple string.

In this case, you may be interested in learning about Pattern.quote . You can do Pattern.quote("|") . Thus, none of the characters will be considered as special.

+12
source

You need to use escape char before meta char | which represents OR . Also, since you need to pass the regular expression to split as String, you also need to avoid the escape character.

Try the following:

  String str = "ARIYALUR:ARIYALUR|CHENNAI:CHENNAI|COIMBATORE:COIMBATORE|CUDDALORE:CUDDALORE|DINDIGUL:DINDIGUL|ERODE:ERODE|KANCHEEPURAM:KANCHEEPURAM|KANYAKUMARI:KANYAKUMARI|KRISHNAGIRI:KRISHNAGIRI|MADURAI:MADURAI|NAMAKKAL:NAMAKKAL|NILGIRIS:NILGIRIS|PERAMBALUR:PERAMBALUR|PONDICHERRY:PONDICHERRY|SALEM:SALEM|THANJAVUR:THANJAVUR|THENI:THENI|THIRUVALLUR:THIRUVALLUR|THOOTHUKUDI:THOOTHUKUDI|TIRUNELVELI:TIRUNELVELI|VELLORE:VELLORE|VILLUPURAM:VILLUPURAM|VIRUDHUNAGAR:VIRUDHUNAGAR|"; String [] tokens = str.split("\\|"); CHENNAI: CHENNAI | COIMBATORE: COIMBATORE | CUDDALORE: CUDDALORE | DINDIGUL: DINDIGUL | ERODE: ERODE | KANCHEEPURAM: KANCHEEPURAM | KANYAKUMARI: KANYAKUMARI | KRISHNAGIRI: KRISHNAGIRI | MADURAI: MADURAI | NAMAKKAL: NAMAKKAL | NILGIRIS:  String str = "ARIYALUR:ARIYALUR|CHENNAI:CHENNAI|COIMBATORE:COIMBATORE|CUDDALORE:CUDDALORE|DINDIGUL:DINDIGUL|ERODE:ERODE|KANCHEEPURAM:KANCHEEPURAM|KANYAKUMARI:KANYAKUMARI|KRISHNAGIRI:KRISHNAGIRI|MADURAI:MADURAI|NAMAKKAL:NAMAKKAL|NILGIRIS:NILGIRIS|PERAMBALUR:PERAMBALUR|PONDICHERRY:PONDICHERRY|SALEM:SALEM|THANJAVUR:THANJAVUR|THENI:THENI|THIRUVALLUR:THIRUVALLUR|THOOTHUKUDI:THOOTHUKUDI|TIRUNELVELI:TIRUNELVELI|VELLORE:VELLORE|VILLUPURAM:VILLUPURAM|VIRUDHUNAGAR:VIRUDHUNAGAR|"; String [] tokens = str.split("\\|"); 
0
source
 public static String[] splitWord(String x){ String[] j = new String [200]; for(int i=0;i<x.split("\|").length;i++){ j[i] = x.split("\|")[i]; } return j; } 

I came up with this method for these types of situations. To use it, call the method and specify which word you need to get:

 Classname.splitWord(String)[word in array]; 
-2
source

All Articles