你可以使用Lookahead和Lookbehind。喜歡這個:
System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("(?=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")));
你會得到:
[a;, b;, c;, d]
[a, ;b, ;c, ;d]
[a, ;, b, ;, c, ;, d]
最後一個是你想要的。
((?<=); |(?=;))等于選擇前一個空字元;或之後。 希望這可以幫助。 編輯Fabian Steeg對可讀性的評論是有效的。可讀性總是RegEx的問題。一件事,我幫助緩和這是建立一個變量,其名稱代表正規表達式,并使用Java String格式來幫助。喜歡這個:
static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";
...
public void someMethod() {
...
final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";"));
...
}
...
這有點幫助。 😀