如何在Kotlin中完全禁用字符串插值?
在Scala中禁用字符串插值且无需转义$的方法
在Scala里要实现这个需求超简单——直接用不带s前缀的普通双引号字符串就搞定了,完全不用逐个转义$符号!
核心解决方案
你只需要去掉字符串前面的s前缀,直接声明普通字符串即可:
val rawString = "$ $abc $$abc ${a} ${}"
这个字符串里的所有$符号都会被当作普通字符原样保留,Scala不会对其中的$abc、${a}等内容进行插值解析。
和插值字符串的对比
你提到的s"$ $abc $$abc ${a} ${}"是启用了字符串插值的版本,它的行为和普通字符串完全不同:
$abc会尝试查找当前作用域中名为abc的变量并替换其值$$会被特殊处理成单个$${a}会插值变量a的值${}这种写法还会直接报错,因为没有指定要插值的变量名
而普通字符串完全不会处理这些规则,所有内容原封不动。
多行字符串的情况
如果你的目标字符串是多行的,使用普通的三重双引号字符串"""也能达到同样的效果,而且不需要处理换行转义:
val multiLineRawString = """$ $abc $$abc ${a} ${} Here's another line with $ signs, no interpolation!"""
同样,所有$都会被原样保留,不会触发任何插值逻辑。
内容的提问来源于stack exchange,提问作者raisercostin
相关产品推荐
相关产品推荐

