You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台Kotlin语言中如何反转义已转义字符串?

Android中已转义字符串的反转义方法

在Android开发场景下,Regex.escape()仅提供字符串转义能力,并无内置反转义函数,以下是两种可行的实现方案:

方法一:自定义正则替换实现反转义

Regex.escape()的核心逻辑是对正则特殊字符(如., *, +, ?, [], ()等)添加反斜杠转义,反转义只需将这些被转义的字符还原即可。

Kotlin 实现代码

fun String.unescapeRegex(): String {
    // 匹配被转义的正则特殊字符,将\X替换为原字符X
    return this.replace(Regex("\\\\([\\Q.*+?^${}()|[]\\E\\\\])"), "$1")
}

// 使用示例
fun main() {
    val originalStr = "demo.*+?[]()"
    val escapedStr = Regex.escape(originalStr)
    println("转义后:$escapedStr") // 输出 demo\.\*\+\?\[\]\(\)
    val unescapedStr = escapedStr.unescapeRegex()
    println("反转义后:$unescapedStr") // 输出 demo.*+?[]()
}

代码说明

  • 正则中的\\Q和\\E用于包裹正则特殊字符,避免它们被解析为正则语法;
  • 捕获组$1提取被反斜杠转义的原字符,完成反转义操作。

方法二:借助Apache Commons Lang工具类

如果项目已引入Apache Commons Lang库,可直接使用现成工具方法处理,它能兼容多种转义场景:

引入依赖(Module级build.gradle)

implementation 'org.apache.commons:commons-lang3:3.14.0'

使用示例

import org.apache.commons.lang3.StringEscapeUtils

fun main() {
    val escapedStr = Regex.escape("test^$|")
    val unescapedStr = StringEscapeUtils.unescapeJava(escapedStr)
    println(unescapedStr) // 输出 test^$|
}

注意事项

  • 若转义字符串包含自定义转义规则(非正则相关),需根据实际场景调整反转义逻辑;
  • 确保反转义规则与Regex.escape()的转义逻辑完全匹配,避免还原错误。

内容的提问来源于stack exchange,提问作者Abdullah Omer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:45:36