您可能需要閱讀了關於零寬度匹配分裂。這裏有些例子。試一試。
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