4

我有以下文字: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("|"),但我的数组是由单个字符而不是每个区组成的。

4

3 回答 3

12

|是正则表达式中的特殊符号。改为使用\\|

我将解释为什么我附加了 2 个斜杠。为了逃避|,我需要\|。但是,要表示字符串\|,"\\|"是必需的,因为\它本身需要在字符串横向进行转义。

而且,正如 xagyg 在评论中指出的那样, split 会将参数视为正则表达式。它不会被视为纯字符串。

在这个用例中,您可能有兴趣了解Pattern.quote。你可以做到Pattern.quote("|")。这样,任何字符都不会被视为特殊字符。

于 2012-12-01T16:46:02.977 回答
0

您需要在代表的元字符之前使用转义|字符OR此外,由于您需要将拆分中的正则表达式作为字符串传递,因此您还需要转义转义字符。

试试下面:

    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("\\|");
于 2012-12-01T16:59:41.817 回答
-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];
于 2013-06-05T14:23:34.873 回答