首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KotlinPoet或类似的;生成非原始的Kotlin字符串文本。

使用KotlinPoet或类似的;生成非原始的Kotlin字符串文本。
EN

Stack Overflow用户
提问于 2020-02-19 04:50:15
回答 1查看 276关注 0票数 3

简单明了;是否有一种方法可以从字符串生成有效的Kotlin字符串文字(非raw,如非三元引号);我目前正在尝试使用KotlinPoet来实现这一点。

为了清晰起见,示例输入:

代码语言:javascript
复制
Hello, how are you?
I'm doing "great"!
I hope you are too!
It'll cost you $2.

期望的示例输出:

代码语言:javascript
复制
"Hello, how are you?\nI'm doing \"great\"!\nI hope you are too!\nIt'll cost you \$2."

使用KotlinPoet,我从到目前为止学到的API中所能管理的最好方法是:

代码语言:javascript
复制
"""
|Hello, how are you?
|I'm doing "great"!
|I hope you are too!
|It'll cost you ${'$'}2.
|""".trimMargin()

这虽然很实用,但不是我想要达到的目标。

通过杰克逊的ObjectMapper::writeValueAsString,我已经能够在功能上完成一些事情,但是,我确信使用它来生成有效的Kotlin代码会有很多警告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 08:13:59

不幸的是,KotlinPoet internal中的相关函数,或者您可以使用isConstantContext = true调用它,就像在这个测试中一样。

因此,作为一种解决办法,您可以将字符串放在一个常量上下文中,例如const val x = ...@A(...) (其中...是您的字符串),为其生成代码,然后删除除文字之外的所有内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60293241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档