首页 > 解决方案 > 如何在kotlin中将字符串转换为实体

问题描述

我有一个像下面这样的字符串:

str = "Test(a=10, b=100, c=1.0, d=2.0)"

实体Test是:

data class Test(
   val a: int = 0,
   val b: Int = 0,
   val c: Double = 0.0,
   val d: Double = 0.0
)

我应该怎么做才能将字符串转换strTest实体?

谢谢!!

标签: stringkotlin

解决方案


正则表达式在这里似乎是一个合适的选择:

data class Test(val a: Int = 0, val b: Int = 0, val c: Double = 0.0, val d: Double = 0.0)
fun main() {
    val str = "Test(a=10, b=100, c=1.0, d=2.0)"
    print(getTest(str))
}
fun getTest(str: String): Test {
    val regex = """Test\(a=(.+), b=(.+), c=(.+), d=(.+)\)""".toRegex()
    val matches = regex.find(str)
    return matches?.groupValues?.let { groups ->
        Test(groups[1].toInt(), groups[2].toInt(), groups[3].toDouble(), groups[4].toDouble())
    } ?: Test()
}

如果您正在考虑将对象存储为字符串以重新实例化它们,请考虑序列化。看看这里


推荐阅读