您可能需要阅读了关于零宽度匹配分裂。这里有些例子。试一试。
final public class SplitStr
{
private static void strDump(String[] arr)
{
for (String s : arr) {
System.out.format("[%s]", s);
}
System.out.println();
}
public static void main(String[] args)
{
strDump("1,234,567,890".split(","));
// "[1][234][567][890]"
strDump("1,234,567,890".split("(?=,)"));
// "[1][,234][,567][,890]"
strDump("1,234,567,890".split("(?<=,)"));
// "[1,][234,][567,][890]"
strDump("1,234,567,890".split("(?<=,)|(?=,)"));
// "[1][,][234][,][567][,][890]"
strDump(":a:bb::c:".split("(?=:)|(?<=:)"));
// "[][:][a][:][bb][:][:][c][:]"
strDump(":a:bb::c:".split("(?=(?!^):)|(?<=:)"));
// "[:][a][:][bb][:][:][c][:]"
strDump(":::a::::b b::c:".split("(?=(?!^):)(?<!:)|(?!:)(?<=:)"));
// "[:::][a][::::][b b][::][c][:]"
strDump("a,bb:::c d..e".split("(?!^)\\b"));
// "[a][,][bb][:::][c][ ][d][..][e]"
strDump("ArrayIndexOutOfBoundsException".split("(?<=[a-z])(?=[A-Z])"));
// "[Array][Index][Out][Of][Bounds][Exception]"
strDump("1234567890".split("(?<=\\G.{4})"));
// "[1234][5678][90]"
// Split at the end of each run of letter
strDump("Boooyaaaah! Yippieeee!!".split("(?<=(?=(.)\\1(?!\\1))..)"));
// "[Booo][yaaaa][h! Yipp][ieeee][!!]"
}
}
你已经有了所有的代码来验证你自己在那里... – Mat 2012-01-01 13:55:24
不,它不告诉我为什么它存储空值,因此我问这个问题。 – ziggy 2012-01-01 14:39:41
它不存储空值,文档告诉你发生了什么 - JavaDocs中有这个函数的例子。 – Mat 2012-01-01 14:48:08