String类添加了新方法来处理文本块:

  • stripIndent():从字符串的开头和结尾删除附带的空格。
  • translateEscapes():根据字符串语法翻译转义序列。
  • formatted():相当于String的format()方法,支持文本块字符串中的格式化。

stripIndent

stripIndent()从字符串的开头和结尾删除附带的空格,每行都进行相同的缩进。

package com.morris.java17;

/**
 * String新增的API之stripIndent()的使用
 */
public class StringStripIndentDemo {
    public static void main(String[] args) {
        String t1 = """
       \s\s\saaa\s\s\s
       \s\s\sbbb\s\s\s
       \s\s\sccc\s\s\s""";
        // 为了看到效果,将空格替换为.
        System.out.println(t1.replaceAll("\s", "."));
        System.out.println("----------");

        String t2 = t1.stripIndent();
        // 为了看到效果,将空格替换为.
        System.out.println(t2.replaceAll("\s", "."));
    }
}

运行结果如下:

...aaa...
...bbb...
...ccc...
----------
aaa
bbb
ccc

translateEscapes

translateEscapes()将Java转义序列转换为相应的字符,并返回转换后的字符串。

package com.morris.java17;

/**
 * String新增的API之translateEscapes()的使用
 */
public class StringTranslateEscapesDemo {
    public static void main(String[] args) {
        System.out.println("\u005C'".translateEscapes());
    }

}

运行结果如下:

'

formatted()

formatted()相当于String的format()方法,支持文本块字符串中的格式化。

package com.morris.java17;

/**
 * String新增的API之formatted()的使用
 */
public class StringFormattedDemo {
    public static void main(String[] args) {
        String s = "hello %s";

        // replace
        System.out.println(s.replace("%s", "world")); // hello world

        // String.format
        System.out.println(String.format(s, "world")); // hello world

        // formatted()
        System.out.println(s.formatted( "world")); // hello world
    }
}