如何解开科特林已经逃脱的绳子?(安卓系统)



如何在android 中将已绑定字符串转换为unescape

// To convert from normal to enscaped string
val escaped:String = Regex.escape("")

但是Regex 中没有Unescape函数

这里是解决问题的示例代码:

import java.lang.StringBuilder
fun main(args: Array<String>) {
val literal = "a\Qb\Ec"
val str = Regex.escape(literal)
val newValue = unescape(str)

println(literal)
println(str)
println(newValue)
}
enum class S { BEGIN, ESC, LITERAL, ESC_END }
fun unescape(str: String): String {
val sb = StringBuilder()
var state = S.BEGIN
for (c in str.toCharArray()) {
when (c) {
'\' ->
when (state) {
S.BEGIN -> {
state = S.ESC
}
S.LITERAL -> {
state = S.ESC_END
}
S.ESC -> {
state = S.ESC
sb.append("\")
}
S.ESC_END -> {
state = S.LITERAL
sb.append("\\")
}
}
'Q' ->
when (state) {
S.ESC -> state = S.LITERAL
S.BEGIN -> {
sb.append(c)
}
S.LITERAL -> {
sb.append(c)
}
S.ESC_END -> {
state = S.LITERAL
sb.append("\Q")
}
}
'E' ->
when (state) {
S.ESC -> {
state = S.BEGIN
sb.append("E")
}
S.BEGIN -> {
sb.append(c)
}
S.LITERAL -> {
sb.append(c)
}
S.ESC_END -> {
state = S.BEGIN
}
}
else -> {
sb.append(c)
}
}
}
return sb.toString()
}