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 に答える