代码:
String line = "/abc/1/";
String[] tokens = line.split("/");
我想得到{"", "abc", "1", ""}
。
但是,实际输出为{"", "abc", "1"}
。
令我困惑的是为什么只有一个“”,也许line.split("/")
出了点问题。
答案 0 :(得分:14)
使用String#split
常用的第二个参数:
String line = "/abc/1/";
String[] tokens = line.split("/", -1);
这将返回{"", "abc", "1", ""}
。
摘自String#split(String pattern, int n)
的文档:
如果 n 是非正数,则模式将被尽可能多地应用,并且数组可以具有任意长度
答案 1 :(得分:1)
只是Tim回答的后续步骤,正如doc明确指出的那样,我们可以使用第二个flag
来控制字符串的正则表达式的使用时间。 limit
有三种不同的选择:
public String[] split(String regex, int limit)
limit
n为正,则返回数组的长度将不大于n,并且数组的最后一个条目将包含所有剩余的字符。 limit
n为负,则没有限制,并且将返回所有与模式匹配的元素; limit
n为零,则基于2,所有后缀/尾随的空值将被丢弃。 对于您的问题,您应该尝试:
line.split("/", -1); // include all results.