首頁  >  文章  >  Java  >  如何使用 Java Lookahead 和 Lookbehind 分割字串並保留分隔符號?

如何使用 Java Lookahead 和 Lookbehind 分割字串並保留分隔符號?

Barbara Streisand
Barbara Streisand原創
2024-10-24 14:41:31370瀏覽

How to Split Strings with Delimiters Preserved Using Java Lookahead and Lookbehind?

在保留分隔符號的情況下拆分字串

使用由一組唯一分隔符號分隔的多行字串時,拆分字串可能會很困難同時還保留分隔符號本身。標準 String.split 方法僅根據指定的分隔符號分隔字串,並丟棄分隔符號。

使用Lookahead 和Lookbehind

Java 開發工具包(JDK)提供了使用lookahead和lookbehind的解決方案,它們是正規表示式的功能,允許您匹配和捕獲字元而不將它們包含在最終結果中。

以下是使用lookahead和lookbehind的範例:

<code class="java">String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";

String[] splitWithDelimiter = input.split("((?<=;)|(?=;))");
System.out.println(Arrays.toString(splitWithDelimiter));</code>

模式:

  • (?
  • (?=;)符合分號之前的空字元(向前找到)。
  • ((?

輸出:

[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]

此結果將分隔符號與文字一起保留,滿足在分割字串時保持分隔符號完整的要求。

提高可讀性

正規表示式有時難以閱讀和理解。為了增強可讀性,您可以建立一個具有表示正規表示式模式的描述性名稱的變數。例如:

<code class="java">static final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";

public void someMethod() {
    final String[] splitResults = input.split(String.format(WITH_DELIMITER, ";"));
}</code>

透過使用佔位符和Java的String.format,可以讓正規表示式更直觀,更容易解釋。

以上是如何使用 Java Lookahead 和 Lookbehind 分割字串並保留分隔符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn