string - 如何在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
)
我应该怎么做才能将字符串转换str
为Test
实体?
谢谢!!
解决方案
正则表达式在这里似乎是一个合适的选择:
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()
}
如果您正在考虑将对象存储为字符串以重新实例化它们,请考虑序列化。看看这里。
推荐阅读
- c++ - “表达式不可赋值”
- c++ - C ++将对象向量写入文件
- html - 为什么我的图像没有按照我喜欢的方式对齐?
- autohotkey - 再次按下按键时功能不同
- python - 尝试每天更新covid
- shopify - 在 shopify image_picker 中获取图像源需要帮助
- asp.net-core-mvc - .NET TopologySuite 多边形放大
- python-3.x - pip3 install inside venv 抛出“要求已经满足”
- haskell - cabal 说“重新安装可能会破坏以下软件包”是什么意思
- python - 我们如何通过 Down_arrow 将焦点从 QLineEdit 更改为 QListWidget?