如何正确使用斜线分割字符串

时间:2018-08-15 06:10:37

标签: java regex

代码:

String line = "/abc/1/";
String[] tokens = line.split("/");

我想得到{"", "abc", "1", ""}

但是,实际输出为{"", "abc", "1"}

令我困惑的是为什么只有一个“”,也许line.split("/")出了点问题。

2 个答案:

答案 0 :(得分:14)

使用String#split常用的第二个参数:

String line = "/abc/1/";
String[] tokens = line.split("/", -1);

这将返回{"", "abc", "1", ""}

Demo

摘自String#split(String pattern, int n)的文档:

  

如果 n 是非正数,则模式将被尽可能多地应用,并且数组可以具有任意长度

答案 1 :(得分:1)

只是Tim回答的后续步骤,正如doc明确指出的那样,我们可以使用第二个flag来控制字符串的正则表达式的使用时间limit有三种不同的选择:

public String[] split(String regex, int limit)
  1. 如果limit n为,则返回数组的长度将不大于n,并且数组的最后一个条目将包含所有剩余的字符。
  2. 如果limit n为,则没有限制,并且将返回所有与模式匹配的元素;
  3. 如果limit n为,则基于2,所有后缀/尾随的空值将被丢弃。

对于您的问题,您应该尝试:

line.split("/", -1); // include all results.