JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java 核心技术-12版 卷Ⅰ- 3.6.10 字符串文本块

wys521 2024-11-28 09:00:54 精选教程 19 ℃ 0 评论

3.6.10 文本块

利用java 15 新增的文本块(text block)特性,可以很容易地提供跨多行的字符串字面量。文本块以””” 开头,后面是一个换行符,并以另一个 “”” 结尾:

String greeting = """

Hello

World

""";

文本块比相应的字符串字面量更易于读写:

“Hello\nWorld\n”

这个字符串包含两个 \n:一个在 Hello 后面,另一个在World 后面。开始””” 后面的换行符不作为内容的一部分。


如果不想要最后一行后面的换行符,可以让””” 紧跟在最后一个字符后面

String greeting ="""

Hello

World""";

文本块特别适合包含用其他语言编写的代码,如SQL 或HTML 。可以直接将那些代码粘贴到三引号之间

String html ="""

<div class=”Warning”> 

    Beware of those who say “Hello “ to the world

</div>

"""

需要说明的是,一般不用对引号转义。只有两种情况下需要对引号转义


    • 文本块以一个引号结尾
    • 文本块中包含三个或更多引号组成的一个序列。
  • 遗憾的是,所有的反斜线都需要转义。
  • 常规字符串中的所有转义序列在文本块中也有同样的作用。
  • 有一个转义序列只能在文本块中使用。行尾的 \ 会把这一行与下一行连接起来。例如:

"""
Hello ,my name is Hal. \

Please enter you name:""";

等同于
"Hello ,my name is Hal. Please enter you name:"

文本块会对行结束符进行标准化,删除末尾的空白符,并把Windows 的行结束符(\r\n) 改为简单的换行符(\n)。尽管不太可能,不过假如确实需要保留末尾的空格,这种情况下可以把最后一个空格转换为一个 \s 转义序列

对于前导空白符则更为复杂。考虑一个从左边界缩进的典型的变量声明。文本块也可以缩进:

String html = """

    <div class=”Warning”>

         Beawre of those who say “Hello” to the world

    </div>

""";

将去除文本块中所有行的公共缩进。实际字符串为

“<div class=\”Warning\”>\n Beawre of those who say \“Hello\” to the world\n</div>\n”


  • 注意,第一行和第三行没有缩进。
  • 你的IDE 很可能会使用制表符、空格或者制表符以及空格缩进所有文本块。
  • Java很清晰,它没有规定制表符的宽度。空白符前缀必须与文本块中的所有行完全匹配。
  • 去除缩进过程中不考虑空行。不过,结束””” 前面的空白符很重要。一定要锁紧到想要去除的空白符的末尾。

警告:要当心缩进文本块的公共前缀中混用制表符和空格的情况。不小心漏掉一个空格很容易得到一个缩进错误的字符串。

提示:如果一个文本块包含非Java代码,实际上最好沿左边界放置。这样可以与Java代码区分开,而且可以为长代码行留出更多空间。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表