2024-10-18
一言
我们是学生,学生就要有学生的样子。 --- 《JOJO的奇妙冒险》 · 你家炸了
Java String
Java 21 相比 Java 11,在 String
相关的操作方面增加了许多新特性和方法,这些新特性使得字符串操作更加方便和直观。以下是 Java 21 中新增的与 String
相关的重要特性和方法:
1. stripIndent()
(Java 13)
- 作用: 去除多行字符串中每一行的公共缩进,常用于文本块(Text Blocks)。
- 示例:
输出:
String text = """
Hello,
World!
""";
System.out.println(text.stripIndent());Hello,
World!
2. translateEscapes()
(Java 15)
- 作用: 将字符串中的转义序列转换为实际字符,例如将
\\n
转换为换行符。 - 示例:
输出:
String str = "Hello\\nWorld";
System.out.println(str.translateEscapes());Hello
World
3. formatted()
(Java 15)
- 作用: 用于格式化字符串,类似于
String.format()
,但是更加简洁。 - 示例:
输出:
String name = "John";
String greeting = "Hello, %s".formatted(name);
System.out.println(greeting);Hello, John
4. indent(int n)
(Java 12)
- 作用: 给每一行添加或移除指定数量的空格缩进,正数表示添加缩进,负数表示移除缩进。
- 示例:
输出:
String text = "Hello\nWorld";
System.out.println(text.indent(4));Hello
World
5. repeat(int count)
(Java 11)
- 作用: 重复当前字符串指定次数。
- 示例:
输出:
String str = "Hello ";
System.out.println(str.repeat(3));Hello Hello Hello
6. isBlank()
(Java 11)
- 作用: 判断字符串是否为空或只包含空白字符。
- 示例:
String str = " ";
System.out.println(str.isBlank()); // true
7. lines()
(Java 11)
- 作用: 将字符串按行拆分为流(Stream)。
- 示例:
输出:
String text = "Hello\nWorld\nJava";
text.lines().forEach(System.out::println);Hello
World
Java
8. strip()
, stripLeading()
, stripTrailing()
(Java 11)
- 作用: 去除字符串的前后空白字符。
strip()
使用的是 Unicode 标准,因此与trim()
更加健壮。 - 示例:
String str = " Hello World ";
System.out.println(str.strip()); // 去除前后空白
System.out.println(str.stripLeading()); // 去除前导空白
System.out.println(str.stripTrailing()); // 去除尾随空白
9. 文本块(Text Blocks) (Java 13, Java 15)
- 作用: 使用
"""
定义多行字符串,文本块提供了更加简洁和易读的多行字符串编写方式。 - 示例:
输出:
String textBlock = """
{
"name": "John",
"age": 30
}
""";
System.out.println(textBlock);{
"name": "John",
"age": 30
}
10. String.stripIndent()
与 String.transform()
(Java 12)
- 作用:
stripIndent()
:用于去除多行文本中的公共缩进 。transform(Function<String, R>)
:用于链式地对字符串进行操作。
- 示例:
String result = " Hello ".transform(String::strip);
System.out.println(result); // 输出: "Hello"
11. StringTemplate
(Java 21)
- 作用: 引入了字符串模板(String Template),可以用
STR.
来定义具有占位符的字符串,提供更优雅的字符串插值方式。 - 示例:
String name = "Alice";
int age = 25;
String result = STR."Hello, \{name}. You are \{age} years old.".toString();
System.out.println(result);