Java 开发必看!这些 String 新方法你用过吗?

在 Java 8 及更早版本,String 类虽然已经非常强大,但在一些常用场景下依旧显得笨拙。比如:去除空白只能依赖 trim(),判断是否为空字符串需要自己写工具方法,拼接重复字符还要用循环。

Java 11 起String 类迎来了一系列实用增强,大幅提升了开发体验。本文带你快速梳理这些新方法,并给出最佳实践。


1. strip() / stripLeading() / stripTrailing()

解决什么问题?

  • 老的 trim() 只能去除 ASCII 空白字符,遇到 Unicode 空白(如全角空格)无效。
  • 新的 strip() 系列方法基于 Unicode 标准,可以正确处理各种空白字符。

示例

String s = " Hello Java "; // 前后有全角空格

System.out.println(s.trim());   // 输出: Hello Java 
System.out.println(s.strip());  // 输出:Hello Java
System.out.println(s.stripLeading());   // 输出:Hello Java 
System.out.println(s.stripTrailing());  // 输出: Hello Java

使用场景

  • 处理多语言输入(含中文、日文空格)。
  • 替代 trim() 的更强健方案。

2. isBlank()

解决什么问题?

  • 以前需要写 str == null || str.trim().isEmpty() 来判断空白字符串,既冗长又容易出错。

示例

System.out.println("".isBlank());        // true
System.out.println("   ".isBlank());     // true
System.out.println("\n\t".isBlank());    // true
System.out.println("Java".isBlank());    // false

使用场景

  • 用户输入校验。
  • 配置文件读取时过滤空白行。

3. repeat(int count)

解决什么问题?

  • 以前拼接重复字符/字符串要么用循环,要么用 StringBuilder,非常繁琐。

示例

String line = "-".repeat(10);
System.out.println(line);  // ----------

使用场景

  • 输出分隔线。
  • 简单构造测试数据。

4. lines()

解决什么问题?

  • 以前需要用 BufferedReadersplit("\n") 才能按行分割字符串。

示例

String text = "Java\nKotlin\nScala";

text.lines().forEach(System.out::println);
// 输出:
// Java
// Kotlin
// Scala

使用场景

  • 多行文本的快速处理。
  • 配合 Stream API 做统计/过滤。

5. indent(int n)

解决什么问题?

  • 给多行字符串加缩进,原来需要手动拼接。

示例

String text = "Hello\nJava";
System.out.println(text.indent(4));

输出:

    Hello
    Java

使用场景

  • 格式化日志或报表。
  • 代码生成工具。

6. transform(Function<String, R> f)

解决什么问题?

  • 让字符串与函数式 API 更好结合。

示例

String result = "java"
        .transform(s -> s.toUpperCase())
        .transform(s -> "Hello " + s);

System.out.println(result); // Hello JAVA

使用场景

  • 流式处理字符串。
  • 在链式调用中保持可读性。

总结

  • strip*() 系列:取代 trim(),支持 Unicode 空白。
  • isBlank():更简洁的空白判断。
  • repeat():快速生成重复字符串。
  • lines():字符串按行处理。
  • indent():多行文本缩进。
  • transform():结合函数式编程。

这些方法看似“小而美”,但在日常开发中却能极大减少样板代码。如果你正在使用 JDK 11+,推荐全面拥抱这些新方法,让代码更简洁、更优雅。


📑 String 新方法速查表(JDK 11+)

方法功能示例
strip()去掉前后空白(支持 Unicode)" Hello ".strip()"Hello"
stripLeading()去掉前导空白" Java".stripLeading()"Java"
stripTrailing()去掉尾部空白"Java ".stripTrailing()"Java"
isBlank()判断字符串是否为空白" ".isBlank()true
repeat(int n)重复字符串"-".repeat(5)"-----"
lines()按行拆分为 Stream<String>"A\nB".lines()["A", "B"]
indent(int n)为每行添加缩进"Hello\nJava".indent(2)
transform(Function)函数式处理字符串"java".transform(s -> s.toUpperCase())"JAVA"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值