除了`String`、`StringBuffer` 和 `StringBuilder`之外,还有什么处理字符串的方法?

一、标准库中的字符串处理类

1. StringJoiner(Java 8+)
  • 用途:用于在拼接字符串时自动添加分隔符、前缀和后缀。
  • 示例
    StringJoiner sj = new StringJoiner(", ", "[", "]");
    sj.add("A").add("B").add("C");
    System.out.println(sj.toString()); // 输出:[A, B, C]
    
  • 适用场景:集合元素拼接、日志格式化等。
2. StringTokenizer(旧版类)
  • 用途:分割字符串(类似 String.split(),但性能更高,功能更简单)。
  • 示例
    StringTokenizer st = new StringTokenizer("Hello,World,Java", ",");
    while (st.hasMoreTokens()) {
        System.out.println(st.nextToken());
    }
    
  • 注意:Java 5+ 推荐使用 String.split() 或正则表达式。
3. CharArrayWriter
  • 用途:将字符写入内存缓冲区(基于 char[]),最后转换为字符串。
  • 示例
    CharArrayWriter writer = new CharArrayWriter();
    writer.write("Hello");
    writer.write(" World");
    String result = writer.toString(); // Hello World
    
  • 适用场景:替代 StringBuilder 处理字符流。
4. CharBuffer(NIO 类)
  • 用途:用于高效处理字符缓冲区的读写操作,支持内存映射等高级特性。
  • 示例
    CharBuffer buffer = CharBuffer.allocate(100);
    buffer.put("Hello").flip();
    String s = buffer.toString(); // Hello
    
  • 适用场景:高性能 I/O 或大规模字符处理。

二、字符串工具方法(String 类的扩展)

1. String.format()System.out.printf()
  • 用途:格式化字符串(类似 C 语言的 printf)。
  • 示例
    String s = String.format("Name: %s, Age: %d", "Alice", 30);
    
2. String.join()(Java 8+)
  • 用途:用分隔符拼接字符串集合。
  • 示例
    List<String> list = List.of("A", "B", "C");
    String joined = String.join(" | ", list); // A | B | C
    
3. String.repeat()(Java 11+)
  • 用途:重复字符串多次。
  • 示例
    String s = "Java".repeat(3); // JavaJavaJava
    
4. 文本块(Text Blocks,Java 15+)
  • 用途:简化多行字符串的定义。
  • 示例
    String json = """
        {
            "name": "Alice",
            "age": 30
        }
        """;
    

三、正则表达式相关类

1. PatternMatcher
  • 用途:通过正则表达式匹配、替换或分割字符串。
  • 示例
    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher("abc123def");
    while (matcher.find()) {
        System.out.println(matcher.group()); // 123
    }
    

四、第三方库工具

1. Apache Commons Lang - StringUtils
  • 常用方法
    StringUtils.isEmpty(str);        // 判空
    StringUtils.join(list, ",");     // 拼接集合
    StringUtils.substringBetween(str, "[", "]"); // 提取子串
    
  • 依赖:需引入 commons-lang3
2. Guava - Strings
  • 常用方法
    Strings.padStart("Java", 6, ' '); // "  Java"
    Strings.nullToEmpty(str);        // 将 null 转为空字符串
    

五、底层优化特性

Compact Strings(Java 9+)
  • 改进String 内部存储从 char[] 改为 byte[],根据字符编码(Latin-1 或 UTF-16)动态优化内存占用。
  • 效果:减少内存消耗,尤其对纯英文字符串(节省约 50% 内存)。

总结

Java 中处理字符串的方式多样,可根据场景选择:

场景推荐工具
简单拼接String+ 操作符(编译器优化)
高频修改StringBuilder(单线程)
多线程安全修改StringBuffer(锁消除优化后接近)
格式化拼接StringJoinerString.format()
集合拼接String.join() 或 Stream API
复杂文本处理正则表达式(Pattern/Matcher
高性能 I/O 或缓冲区操作CharBuffer(NIO)
多行字符串文本块(Java 15+)

对于第三方库,可根据项目需求选择 StringUtils(Apache)或 Strings(Guava)简化代码。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋名RG

请我喝杯咖啡,让我更有动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值