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 的字符串增强功能主要集中在以下几个方面:
- 空白字符处理:
isBlank()、strip()、stripLeading() 和 stripTrailing() 提供了更灵活的空白字符管理方式。 - 多行文本处理:
lines() 方法使得多行字符串的操作更加方便。 - 字符串重复:
repeat(int count) 提供了一种简洁的方式来生成重复的字符串。
这些新方法不仅简化了代码,还提高了字符串操作的效率和可读性。