使用KotlinPoet或类似工具;生成非原始的Kotlin字符串文字

问题描述 投票:2回答:1

简单明了;有没有一种方法可以从字符串生成有效的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代码有很多注意事项。

kotlin code-generation string-literals kotlinpoet
1个回答
1
投票

[不幸的是,KotlinPoet ObjectMapper::writeValueAsString中的相关功能,或者您可以像is internal中那样用internal来调用它。

因此,一种解决方法是,您可以将字符串放在恒定的上下文中,例如isConstantContext = truethis test(其中const val x = ...是您的字符串),为其生成代码,然后除去文字以外的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.