Java 11 新特性之 字符串增强

72 阅读2分钟

Java 11 对 ​​String​​ 类进行了增强,引入了一些新的实用方法,使得字符串操作更加简洁和高效。这些新方法可以帮助开发者更轻松地处理常见的字符串操作场景,例如空白字符检查、去除首尾空格、分割多行文本等。

以下是 Java 11 中新增的 ​​String​​ 方法及其用法:


1. ​​isBlank()​

判断字符串是否为空或仅包含空白字符(如空格、制表符 ​​\t​​​、换行符 ​​\n​​ 等)。

示例:

String str1 = "   ";
String str2 = "";
String str3 = "Hello";

System.out.println(str1.isBlank()); // true
System.out.println(str2.isBlank()); // true
System.out.println(str3.isBlank()); // false

解释:

  • ​isBlank()​​ 是一个便捷的方法,用于检查字符串是否为空白。
  • 它比传统的 ​​trim().isEmpty()​​ 更加直观和高效。

2. ​​lines()​

将字符串按行分割为一个 ​​Stream​​,每行作为流中的一个元素。

示例:

String text = "Line 1\nLine 2\nLine 3";

text.lines().forEach(System.out::println);

输出:

Line 1
Line 2
Line 3

解释:

  • ​lines()​​ 方法非常适合处理多行文本,例如日志文件或配置文件。
  • 它返回的是一个 ​​Stream<String>​​​,可以与其他流式操作(如 ​​filter​​​、​​map​​ 等)结合使用。

3. ​​strip()​

去除字符串首尾的空白字符(包括 Unicode 空白字符)。与 ​​trim()​​ 类似,但支持更广泛的空白字符。

示例:

String str = "  \u2000Hello World\u2000  ";

System.out.println("[" + str.strip() + "]"); // [Hello World]
System.out.println("[" + str.trim() + "]");  // [ Hello World ]

解释:

  • ​strip()​​​ 支持 Unicode 标准定义的所有空白字符,而 ​​trim()​​​ 只能处理 ASCII 空白字符(如空格、​​\t​​​、​​\n​​ 等)。
  • 如果你的应用需要处理国际化或多语言数据,推荐使用 ​​strip()​​。

4. ​​stripLeading()​​​ 和 ​​stripTrailing()​

分别用于去除字符串开头或结尾的空白字符。

示例:

String str = "   Hello World   ";

System.out.println("[" + str.stripLeading() + "]");  // [Hello World   ]
System.out.println("[" + str.stripTrailing() + "]"); // [   Hello World]

解释:

  • ​stripLeading()​​ 仅去除开头的空白字符。
  • ​stripTrailing()​​ 仅去除结尾的空白字符。
  • 这些方法在需要保留部分内容时非常有用。

5. ​​repeat(int count)​

重复字符串指定次数,并返回结果。

示例:

String str = "abc";

System.out.println(str.repeat(3)); // abcabcabc
System.out.println(str.repeat(0)); // (空字符串)

解释:

  • ​repeat(int count)​​ 是一种简单且高效的方式,用于生成重复的字符串。
  • 如果 ​​count​​ 为 0,则返回空字符串。

总结

Java 11 的字符串增强功能主要集中在以下几个方面:

  1. 空白字符处理:​​isBlank()​​​、​​strip()​​​、​​stripLeading()​​​ 和 ​​stripTrailing()​​ 提供了更灵活的空白字符管理方式。
  2. 多行文本处理:​​lines()​​ 方法使得多行字符串的操作更加方便。
  3. 字符串重复:​​repeat(int count)​​ 提供了一种简洁的方式来生成重复的字符串。

这些新方法不仅简化了代码,还提高了字符串操作的效率和可读性。