原始字符串中的换行是否依赖于平台?

原始字符串中的换行是否依赖于平台?

val a = "one\ntwo"; val b = """one two""" println(a == b) 

换句话说,上面的println语句是否保证打印是否true

不幸的是,我找不到具体说明这一点的任何消息来源。 这感觉就像应该在文档中的东西。

然而,IntelliJ中的意图动作将原始字符串转换为普通字符串。 我认为应该是安全的,假设这个行为不应该改变你的代码的含义(或者如果它,那应该作为一个错误提交)。 如果你在一个带有换行符的原始字符串上试试这个,你可以看到它用\n字符替换了换行符。

你可以在这里看到这个动作的来源,以及对它的测试,希望它能够在这里(之前)和这里(之后)将换行符转换为\n


编辑: 这里是一个关于原始字符串的问题的评论(据我所知)说,一个原始字符串有\n行尾在它。

我不认为它保证ab是平等的。 Spec对于原始字符串文字有这样的说法:

Kotlin有两种类型的字符串文字:转义字符串,可能有转义字符和可以包含换行符和任意文本的原始字符串。

  1. 规范并没有说这是一样的
  2. 规范对“新行”和“任意文本”进行区分
  3. 在Kotlin讨论的@ zsmb13链接中,一位Kotlin工程师说编译器不会保留原始字符串中的换行符(??)。

所以,如果我编写的代码跨平台工作,我会明确的(至少在他们之前)。