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

anv*_*rik 0 java string split

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

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

然而,

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

raw2没有拆分.有谁知道为什么?

Bri*_*new 5

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

请参阅regexp元字符的Pattern.

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

  • StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它. (2认同)