首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java String.replace 使用 null 替換不定長括號內容的正確姿勢

     編輯:程式設計綜合問答

需求澄清

將字符串中所有 `(...)` 及其內容替換為 `"null"` 字符串(非 null 引用)。如 `asd(ahd)asd(hjk)qws` → `asdnullasdnullqws`。

核心問題

  • `String.replace(CharSequence, CharSequence)` **不支持正則表達式**,只能精確匹配固定字符串。
  • 需使用 `String.replaceAll(String regex, String replacement)` 配合正則。

正確代碼

String str = "asd(ahd)asd(hjk)qws";
// 正則:\( 匹配左括號,[^)]* 匹配非右括號字符零次或多次,\) 匹配右括號
String result = str.replaceAll("\\([^)]*\\)", "null");
System.out.println(result); // 輸出: asdnullasdnullqws

進階場景:嵌套括號

若存在 `a(b(c)d)e`,上述正則會匹配 `(b(c)d)`。若需處理嵌套,正則無能為力,需編寫解析器(棧/遞歸下降)。

性能提示

  • 頻繁調用時,預編譯 `Pattern pattern = Pattern.compile("\\([^)]*\\)");` 復用 `Matcher`。
  • 簡單替換可用 `StringBuilder` 手動掃描構建,避免正則開銷。

Java String replaceAll 正則替換括號內容,replace 不支持正則,預編譯 Pattern 優化性能,嵌套括號需解析器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved