本文探討如何利用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)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END