如何在 Java 中對 Java 字串進行轉義?
問題
需要從 Java 原始碼中提取字串並傳遞它們到接受純字串的函數。取消轉義字串文字至關重要,這意味著將 n 和 \ 等字元轉換為其預期形式。
用於取消轉義的可用函數字串
- org.apache.commons.lang.StringEscapeUtils.unescapeJava()
但是,這個函數有幾個限制:
- 忽略空字元表示( )
- 不處理八進位轉義
- 無法處理Java 正規表示式接受的轉義(例如,a、e、cX)
- 缺乏對Unicode 代碼點和UTF-16字元處理
自訂解決方案:unescape_perl_string()
建議使用自訂函數unescape_perl_string() 作為替代方案:
-
所有Java 字串轉義: r, n, f, t,(其中其他)。
-
支援八進位轉義符:、N、NN 等。
-
包含其他轉義符: ?cX(控製字元), ?x{XXX}(十六進位轉義為大括號)。
-
解析 Java 正規表示式轉義: [IDIOT JAVA PREPROCESSOR]uXXXX。
實作細節
unescape_perl_string()函數:
- 迭代輸入字串,根據後面的字元處理轉義序列。
- 例如,r 轉換為回車符,n 轉換為換行符。
- 支援控製字符,cX 表示字符代碼點與'@'。
- 十六進位轉義符 xXX 和 x{XXX} 已正確破解。
- Unicode 代碼點被辨識並轉換為其字元表示形式。
- 未完成或無效的轉義符被標記並報告為錯誤。
以上是如何正確取消轉義 Java 字串文字,處理所有轉義序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!