简单明了;有没有一种方法可以从字符串生成有效的Kotlin字符串文字(non-raw,如非三重引用);我目前正在尝试使用KotlinPoet完成此操作。
为清楚起见,示例输入:
Hello, how are you?
I'm doing "great"!
I hope you are too!
It'll cost you $2.
所需的示例输出:
"Hello, how are you?\nI'm doing \"great\"!\nI hope you are too!\nIt'll cost you \$2."
使用KotlinPoet,到目前为止我可以从所学的API中管理的最好的方法是:
"""
|Hello, how are you?
|I'm doing "great"!
|I hope you are too!
|It'll cost you ${'$'}2.
|""".trimMargin()
虽然功能正常,但不是我想要达到的目标。
[我已经能够用杰克逊的ObjectMapper::writeValueAsString
完成一些功能上接近的事情,但是,我敢肯定,使用它来生成有效的Kotlin代码有很多注意事项。
[不幸的是,KotlinPoet ObjectMapper::writeValueAsString
中的相关功能,或者您可以像is internal
中那样用internal
来调用它。
因此,一种解决方法是,您可以将字符串放在恒定的上下文中,例如isConstantContext = true
或this test(其中const val x = ...
是您的字符串),为其生成代码,然后除去文字以外的所有内容。