上QQ阅读APP看书,第一时间看更新
1.5.7 文本块
使用文本块语法可以更加方便地提供跨行形式的字符串文本。文本块以"""开头,后面可以直接使用换行符,结尾则使用另一个"""来标记:
String greeting = """ Hello World """;
greeting字符串包含两个换行符:一个在Hello之后,另一个在World之后。字符串文本中不包含起始的"""标记后的换行符。
如果你不希望在最后一行使用换行符,那么可以将终止标记符"""放在最后一个字符之后:
String prompt = """ Hello, my name is Hal. \ Please enter your name:""";
在任何一行的末尾,你都可以在行末添加反斜杠作为禁止换行的标志:
String prompt = """ Hello, my name is Hal. \ Please enter your name:""";
这样,字符串内就不包含任何换行符了。
文本块特别适用于一些包含其他语言代码的情况,例如SQL或HTML。只须将其粘贴在一对三重引号之内:
String html = """ <div class="Warning"> Beware of those who say "Hello" to the world </div> """;
需要注意的是,使用文本块时,你可以不用转义引号。但是,文本块中还是有两种特殊情况需要转义引号:
● 文本块以引号结尾;
● 文本块包含3个或更多引号。
遗憾的是,文本块中你仍然需要转义所有反斜杠。
常规字符串中的所有转义序列在文本块中的使用方式都相同。
可以通过删除末尾的空格,或者将Windows系统的换行符(\r\n)更改为更加简单的换行符(\n)的方式来规范文本的换行符。如果你仍旧需要保留末尾的空格,请将最后一个空格转换为\s转义符。以下字符串就以两个空格结尾:
String prompt = """ Hello, my name is Hal. Please enter your name: \s""";
对于前导空格来说,事情就更加复杂了。考虑一个典型的变量声明,需要从左边距进行缩进。可以缩进文本块:
String html = """ <div class="Warning"> Beware of those who say "Hello" to the world </div> """;
这样就会去除文本块中所有行共有的最长前导空格序列。实际字符串是:
"<div class=\"Warning\">\n Beware of those who say \"Hello\" to the world\n</div>\n"
注意,第一行和第三行中没有缩进。
文本块终止标记符"""之前的空格非常重要。但是,在删除缩进的过程中,整行的空格并不会被压缩。
警告:作为前缀的空格必须与文本块中的所有行完全匹配。如果混合使用制表符和空格,你可能会发现删减的空格会比预期的少。