0

I have a string "0000_Clothing|0000_Clothing_Men's|0000_Clothing_Men's_Shirts", and i wanted to split this string on "|".

String CatArray[] = CatContext.split("|");

The above mentioned code is splitting the string into seperate characters like 0,0,0,0,_,C including the | symbol.

What Am i missing here?

4

4 回答 4

5

|是一个正则表达式元字符,转义它"\\|"

于 2013-05-06T06:45:43.167 回答
2

拆分方法需要一个正则表达式,您将不得不转义 |

你可以做

CatContext.split("\\|");

或者

CatContext.split("[|]");
于 2013-05-06T06:46:37.940 回答
1

请注意,public String[] split(String regex)需要一个regex

所以你应该逃避特殊的 char |。转义正则表达式由 完成\,但在 Java 中,\写为\\.

当您转义特殊字符时,您是在告诉 Java:

“不要将其|视为特殊 char |,将其视为常规 char |”。

另一种解决方案是使用public static String quote(String s)返回指定字符串的文字模式字符串”:

String[] CatArray = CatContext.split(Pattern.quote("|"));

于 2013-05-06T06:46:58.933 回答
1

如果您不想处理转义管道(因为管道是一个特殊的正则表达式字符),那么您可以使用Pattern#quote

String[] catArray = CatContext.split(Pattern.quote("|"));

或者更简单:

String[] catArray = CatContext.split("\\Q|\\E"));
于 2013-05-06T06:47:25.203 回答