我有一個字符串「0000_Clothing | 0000_Clothing_Men's | 0000_Clothing_Men's_Shirts」,我想將這個字符串分割爲「|」。在特殊字符上分割字符串
String CatArray[] = CatContext.split("|");
上面提到的代碼將字符串拆分爲單獨的字符,如0,0,0,0,_,C,包括|符號。
我在這裏錯過了什麼?
我有一個字符串「0000_Clothing | 0000_Clothing_Men's | 0000_Clothing_Men's_Shirts」,我想將這個字符串分割爲「|」。在特殊字符上分割字符串
String CatArray[] = CatContext.split("|");
上面提到的代碼將字符串拆分爲單獨的字符,如0,0,0,0,_,C,包括|符號。
我在這裏錯過了什麼?
|
是一個正則表達式元字符,逃吧"\\|"
拆分方法需要一個正則表達式,你將不得不逃離|
你可以做任何
CatContext.split("\\|");
或
CatContext.split("[|]");
注意public String[] split(String regex)需要正則表達式。
所以你應該逃過special char|
。轉義正則表達式由\
完成,但是在Java中,\
被寫爲\\
。
當你逃跑的特殊字符,你告訴的Java:
「不要把|
作爲特殊字符|
,把它當作是普通字符|
」。
另一種解決方案是使用public static String quote(String s)說:「返回指定字符串文字模式String」:
String[] CatArray = CatContext.split(Pattern.quote("|"));
如果你不想進行轉義管道(自管一個特殊的正則表達式字符),那麼你可以使用Pattern#quote
:
String[] catArray = CatContext.split(Pattern.quote("|"));
或者也可以簡單:
String[] catArray = CatContext.split("\\Q|\\E"));
還應該提到,第一個反斜槓是爲了逃避第二個反斜槓(由於Java),它會轉義| (由於正則表達式語法):D – Patashu 2013-05-06 06:46:32