Kav*_*eri 9 string performance android kotlin
根据我的研究,
Kotlin 有两种类型的字符串文字:-
可能包含转义字符的转义字符串。
val s = "Hello ,World\n" +
"from escaped string\n"+
"kotlin"
Run Code Online (Sandbox Code Playgroud)
原始字符串由三重引号 (""") 分隔,不包含转义,可以包含换行符和任何其他字符:
val m = """Hello, World
|from raw string
|kotlin """.trimMargin()
Run Code Online (Sandbox Code Playgroud)
这些字符串可以在多行中使用,无需连接每一行,也无需转义。
我们使用原始字符串只是为了简单和容易实现,还是在任何情况下都提供更好的性能?
这些是我们应该考虑使用原始字符串的其他用例吗?
您的答案在本网站上得到了很好的解释。我将在这里只包括它的重要部分。
Kotlin 中的字符串可以以多种方式使用,如上述链接中所述。这完全取决于使用的要求。如果你有像 html 页面这样的超大字符串,那么你可以使用由三重引号 (""") 分隔的原始字符串。在你有短字符串的地方,你可以使用Escaped strings。
这些之间没有真正的性能差异,但取决于您在其中构建值时使用的字符串连接量。
我不知道这两种字符串文字类型之间有任何性能差异,但至少有一个有趣的用例您应该考虑使用原始字符串:正则表达式。
正则表达式中的预定义字符类和许多其他构造是由\字符引入的(例如,\s匹配空白字符)。当在字符串中包含这些字符时,您需要对它们进行转义:因此,对于正则表达式中的任何此类字符,您需要编写两个,例如"\\d"匹配单个数字。
然而,原始字符串允许您跳过转义部分,从而使正则表达式比您在唯一的字符串文字类型被转义时编写的正则表达式更干净、更简洁,就像在 Java 中发生的情况一样。
请注意,原始字符串并不是 Kotlin 引入的新概念或想法。例如,Python 已经拥有它们很长时间了。