我有以下文字: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|
我尝试做split("|")
,但我的数组由单个字符而不是每个区组成。
答案 0 :(得分:12)
|
是正则表达式中的特殊符号。请改用\\|
。
我会解释为什么我附加了2条斜杠。要逃避|
,我需要\|
。但是,要表示字符串\|
,"\\|"
是必需的,因为\
本身需要在字符串横向中进行转义。
而且,正如xagyg在评论中指出的那样,split会将参数视为正则表达式。它不会被视为普通字符串。
在此用例中,您可能有兴趣了解Pattern.quote。你可以做Pattern.quote("|")
。这样,所有字符都不会被视为特殊字符。
答案 1 :(得分:0)
您需要在重复|
的元字符OR
之前使用转义字符。 此外,由于您需要将split中的正则表达式作为String传递,因此您还需要转义转义字符。
尝试以下:
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("\\|");
答案 2 :(得分:-2)
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;
}
我为这些类型的情况想出了这种方法。 要使用它,请调用方法并指定您需要访问的单词:
Classname.splitWord(String)[word in array];