String.split()使用多个字符分隔符

Sha*_*ahe 1 java regex string split

我在数据库中保存了一个String,如下所示:

01/01/2014$%^&02/01/2014
Run Code Online (Sandbox Code Playgroud)

我正在使用split()java方法.这是我的代码:

String value = database.getValue(); // this returns the value mentioned above
String values[] = value.split("$%^&");

System.out.println("length is = " + values.length);
System.out.println(values[0]);
Run Code Online (Sandbox Code Playgroud)

输出:

length is = 1
01/01/2014$%^&02/01/2014
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Mar*_*oun 7

用途Pattern#quote:

String values[] = value.split(Pattern.quote("$%^&"));
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

String#split以正则表达式为参数.String中的某些字符具有特殊含义.在您的情况下,您需要字符串表示,而不是正则表达式.quote为你这样做.

替代方案:

  • 逃避特殊字符\\(逃避正则表达式完成\.但是在Java中,\写的是\\)
  • 使用String#replace它接受String