在保留分隔符號的情況下拆分字串
使用由一組唯一分隔符號分隔的多行字串時,拆分字串可能會很困難同時還保留分隔符號本身。標準 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中文網其他相關文章!