在字符串拆分期间维护分隔符
使用由一组分隔符分隔的多行字符串时,常见的任务是将其拆分为个别零件。通常,使用 String.split 方法来实现此目的。然而,这种方法省略了结果中的分隔符。
使用 Lookahead 和 Lookbehind
为了在拆分过程中保留分隔符,正则表达式中的 Lookahead 和 Lookbehind 的概念可以
考虑以下代码:
<code class="java">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("((?<=;)|(?=;))")));</code>
此代码使用向前查找和向后查找来检查字符串。具体来说, (?
最后一行,将其分割on ((?
[a;, b;, c;, d] [a, ;b, ;c, ;d] [a, ;, b, ;, c, ;, d]
在所需的结果中,第三行捕获了确切的要求,其中每个文本段后跟其相应的分隔符。
使用变量增强可读性
要提高正则表达式的可读性,请考虑创建一个表示其功能的变量。例如,以下代码使用WITH_DELIMITER变量来指定分隔符:
<code class="java">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, ";")); ... }</code>
此技术有助于阐明正则表达式的意图。
以上是字符串分割时可以保留分隔符吗?的详细内容。更多信息请关注PHP中文网其他相关文章!