字符串拆分具有不同的字符

时间:2012-08-09 08:59:00

标签: java string split

我认为这是一个奇怪的问题。所以这是我的分裂:

String s = "asd#asd";
String[] raw1 = s.split("#"); // this has size of two raw[0] = raw[1] = "asd"

然而,

String s = "asd$asd";
String[] raw2 = s.split("$"); // this has size of ONE

raw2未分割。有谁知道为什么?

4 个答案:

答案 0 :(得分:5)

因为split()需要 regexp ,而$表示行尾。如果你需要拆分一个实际上是正则表达式元字符的字符,那么你需要将其转义。

请参阅Pattern了解正则表达式元字符。

您可能会发现StringTokenizer更适合您的需求。这将采用您应拆分的列表字符,并且不会将它们解释为正则表达式元字符。然而,它使用起来有点冗长和不合适。正如Nandkumar在下面指出的那样,最新的文档声明在新代码中不鼓励它。

答案 1 :(得分:3)

你必须逃脱它:

String s = "asd$asd";
String[] raw2 = s.split("\\$"); // this has size of TWO

答案 2 :(得分:3)

因为split()采用正则表达式而$匹配行的结尾。

你必须逃脱它:

s.split("\\$");

有关正则表达式的详细信息,请参阅Pattern documentation

答案 3 :(得分:1)

你需要逃脱特殊角色,使其成为

s.split("\\$");