首页  >  文章  >  Java  >  字符串分割时可以保留分隔符吗?

字符串分割时可以保留分隔符吗?

Susan Sarandon
Susan Sarandon原创
2024-10-25 02:00:02243浏览

Can Delimiters be Retained during String Splitting?

在字符串拆分期间维护分隔符

使用由一组分隔符分隔的多行字符串时,常见的任务是将其拆分为个别零件。通常,使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn