课程章节介绍
同学们,今天我们来看看Apex里面多行字符串的几个实用小细节。多行字符串,就是你可以让一段文本跨越多行,不用在一行里写得很长。很简单,用单引号或者双引号把它包起来,然后在里面直接换行就可以了。
先记住一个要点:多行字符串完全支持我们常用的那些转义序列。比如你想在字符串里加个换行符、制表符,直接用反斜杠加字母就行。
但有两个特殊的转义值得单独说一下。
第一个,如果你想在一行的末尾故意保留几个空格,正常情况下Apex会自动帮你清掉每一行末尾的空白。那怎么强行留住那些空格呢?你就在那一行的最后写上反斜杠s,也就是 `\s`。这样,尾巴上的空白就被保留下来了,不会被系统修剪掉。
第二个,有时候你写多行字符串是想换行排版,但实际字符串内容里并不想要换行。那怎么办?你可以在前一行的末尾打上一个反斜杠 `\`,注意,这个反斜杠单独出现,不是转义哪个字母。它的作用就是把两行连接起来,而且它自己不会变成换行符,也不会插入任何新东西。于是你虽然写了多行,得到的还是一个连贯的长字符串,只是代码看起来更整齐而已。
接下来聊聊多行字符串在查询里的用法。你写SOQL或者SOSL的时候,如果查询条件里需要一段多行文本,可别直接把多行字面量写在方括号里面,比如直接 `[SELECT ... WHERE Field = '第一行\n第二行']` 这样是不行的。与普通字符串字面量不同,多行字符串不能直接放在查询语句里当值来用,除非你用绑定表达式。
那什么叫绑定表达式呢?很简单,你先把那段多行内容存到一个变量里,比如叫 `myText`,然后在查询里用冒号加上这个变量名,像 `:myText` 这样。Apex就认了,它会从变量里取出多行字符串的值再执行查询。也就是说,多行字符串本身没问题,它只是不能直接“硬写”在查询的字面量里,通过变量绑定就是完全合法的。
除了SOQL和SOSL里的这个小限制,其他所有能用普通字符串的地方,你都可以直接使用多行字符串,没有任何区别。比如做字符串拼接、放在列表里、或者传给方法当参数,统统都可以。
所以啊,大家只要记住:用 `\s` 刻意留空白,用 `\` 来拼接去换行,写查询时记得先存成变量再用冒号绑定,多行字符串就随你怎么用都行。
好了,这个小知识点就讲到这里,大家动手试试就会很清楚了。
关键词
Apex
Salesforce
Developer Guide