Java正則表達式如何替換連續(xù)換行符及空格?

Java正則表達式如何替換連續(xù)換行符及空格?

Java正則表達式高效處理連續(xù)換行符和空格

本文探討如何利用Java正則表達式,優(yōu)雅地替換文本中連續(xù)出現(xiàn)的換行符 (包含中間空格的情況),并可選地去除首尾換行符。 問題在于將多個連續(xù)的換行符(可能包含空格)替換為單個換行符。例如,輸入文本 aaaaaa: bbbbbbb ccccc ,期望輸出 aaaaaa: bbbbbbb ccccc 。

之前嘗試的 +s* *正則表達式未能成功的原因在于對Java字符串轉(zhuǎn)義和正則表達式元字符的理解不足。 在Java字符串字面量中需寫成n,而在正則表達式中, 又需要轉(zhuǎn)義,因此在Java代碼中,匹配 的正則表達式應為\n。

更有效的正則表達式是ns*n,它匹配一個換行符,后跟零個或多個空格,再跟一個換行符。 無需+號,因為我們只需要匹配至少兩個換行符及其間的空格,替換為單個 即可。

立即學習Java免費學習筆記(深入)”;

以下Java代碼演示了如何實現(xiàn)這一替換,并額外處理了首尾換行符:

import java.util.regex.Matcher; import java.util.regex.Pattern;  public class ReplaceNewLine {     public static void main(String[] args) {         String input = " AAAAAA:   BBBBBBB     CCCCC   ";         // 正則表達式匹配連續(xù)換行符和空格         Pattern pattern = Pattern.compile("ns*n");          Matcher matcher = pattern.matcher(input);         String output = matcher.replaceAll(" ");         // 去除首尾換行符         output = output.trim();          System.out.println(output);     } }

這段代碼首先編譯正則表達式ns*n,然后使用replaceAll()方法將所有匹配項替換為單個 。 最后,trim()方法去除字符串首尾的空格和換行符,完善了結(jié)果。 這提供了一種簡潔高效的解決方案。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享