Text Block

Text Block 处理多行文本十分方便,省时省力。无需连接 "+" ,单引号,换行符等。
Java 15 ,参考JEP 378

认识文本块

语法:使用三个双引号字符括起来的字符串。

"""
内容
"""

例如:

String name = """lisi"""; // Error ,不能将文本块放在单行上
String name = """lisi
                 20"""; // Error ,文本块的内容不能在没有中间行结束符的情况下跟随三个开头双引号

String myname= """
zhangsan
20
"""; // 正确

文本块定义要求:

  1. 文本块以三个双引号字符开始,后跟一个行结束符
  2. 不能将文本块放在单行上
  3. 文本块的内容也不能在没有中间行结束符的情况下跟随三个开头双引号
    三个双引号字符 """ 与两个双引号 "" 的字符串处理是一样的,与普通字符串一样使用。例如equals() ,"==" ,连接字符串(“+”),作为方法的参数等。

文本块与普通的双引号字符串一样

Text Block 使用方式与普通字符串一样,== ,equals 比较,调用 String 类的方法。

  1. 字符串比较与方法
public void fun1() {
    String s1= """
           lisi
           """;
    String s2 = """
           lisi
           """;

    // 比较字符串:
    boolean b1 = s1.equals(s2);
    System.out.println("b1 = " + b1);
    // 使用 == 的比较:
    boolean b2 = s1 == s2;
    System.out.println("b2 = " + b2);
    String msg = """
        hello world""";
    // 字符串方法 substring :
    String sub = msg.substring(0, 5);
    System.out.println("sub = " + sub);
}
  1. 输出结果
b1 = true
b2 = true
sub = hello

空白

  1. JEP 378 中包含空格处理的详细算法说明
  2. Text Block 中的缩进会自动去除,左侧和右侧的
  3. 要保留左侧的缩进,空格,将文本块的内容向左移动(tab 键)
    示例:
public void fun2() {
    // 按 tab 向右移动,保留左侧空格:
    String html= """
        <html>
          <body>动力节点,Java 黄埔军校</body>
        </html>
        """;
    System.out.println( html);
}

示例 2 ,indent() 方法:

public void fun3() {
    String colors= """
        red
        green
        blue
        """;
    System.out.println(colors);
    // indent(int space) 包含缩进、space 空格的数量:
    String indent = colors.indent(5);
    System.out.println(indent);
}

输出:

red
green
blue

     red
     green
     blue

文本块的方法

Text Block 的格式方法 formatted() :

public void fun4() {
    String info = """
        Name:%s
        Phone:%s
        Age:%d
        """.formatted("张三", "13800000000", 20);
    System.out.println("info = " + info);
}

String stripIndent():删除每行开头和结尾的空白
String translateEscapes() :转义序列转换为字符串字面量

转义字符

新的转义字符 "" ,表示隐式换行符,这个转义字符被 Text Block 转义为空格。通常用于是拆分非常长的字符串文本,串联多个较小子字符串,包装为多行生成字符串。
新的转义字符,组合非常长的字符串。
示例:

public void fun5() {
    String str= """
        Spring Boot 是一个快速开发框架 \
        基于\"Spring\"框架,创建 Spring 应用 \
        内嵌 Web 服务器,以 jar 或 war 方式运行 \
        """;
    System.out.println("str = " + str);
}

输出:

Spring Boot 是一个快速开发框架 基于 Spring 框架,创建 Spring 应用内嵌Web服务器,以jar 或 war 方式运行

总结

  1. 多行字符串,应该使用 Text Block
  2. 当 Text Block 可以提高代码的清晰度时,推荐使用。比如代码中嵌入 SQL 语句
  3. 避免不必要的缩进,开头和结尾部分
  4. 使用空格或仅使用制表符进行文本块的缩进,混合空白将导致不规则的缩进
  5. 对于大多数多行字符串,分隔符位于上一行的右端,并将结束分隔符位于文本块单独行上。例如:
String colors= """
        red
        green
        blue
        """;
posted @ 2023-04-28 20:54  HopeLive  阅读(85)  评论(0)    收藏  举报