检查StringBuilder是否包含字符串

在Java中,检查StringBuilder是否包含字符串(即非空)的最直接方法是检查其长度(length())​。以下是详细的判断方法:

1. 判断StringBuilder是否为空(无内容)

StringBuilder sb = new StringBuilder();

// 方法1:使用length()判断
if (sb.length() == 0) {
    System.out.println("StringBuilder为空");
}

// 方法2:Java 11+ 使用isEmpty()
if (sb.isEmpty()) { // Java 11及以上版本可用
    System.out.println("StringBuilder为空");
}

2. 判断StringBuilder是否非空(有内容)

StringBuilder sb = new StringBuilder("Hello");

if (sb.length() > 0) {
    System.out.println("StringBuilder包含字符串: " + sb);
}

// 或者更直观的判断
if (!sb.isEmpty()) { // Java 11+
    System.out.println("StringBuilder非空");
}

3. 判断是否包含特定字符串

StringBuilder sb = new StringBuilder("Hello World");

// 方法1:转换为String后判断(消耗资源)
if (sb.toString().contains("World")) {
    System.out.println("包含'World'");
}

// 方法2:使用indexOf()高效判断(推荐)
if (sb.indexOf("World") != -1) {
    System.out.println("包含'World'");
}

4. 完整示例代码

public class StringBuilderCheck {
    public static void main(String[] args) {
        // 空StringBuilder判断
        StringBuilder sb1 = new StringBuilder();
        checkEmpty(sb1); // 输出: StringBuilder为空
        
        // 非空StringBuilder判断
        StringBuilder sb2 = new StringBuilder("Hello");
        checkEmpty(sb2); // 输出: StringBuilder有内容: Hello
        
        // 内容检查
        checkContent(sb2, "Hi");   // 输出: 不包含'Hi'
        checkContent(sb2, "ell");  // 输出: 包含'ell'
    }
    
    static void checkEmpty(StringBuilder sb) {
        if (sb.length() == 0) {
            System.out.println("StringBuilder为空");
        } else {
            System.out.println("StringBuilder有内容: " + sb);
        }
    }
    
    static void checkContent(StringBuilder sb, String search) {
        if (sb.indexOf(search) != -1) {
            System.out.println("包含'" + search + "'");
        } else {
            System.out.println("不包含'" + search + "'");
        }
    }
}

性能建议:

  1. 避免不必要的toString()转换

    // 错误做法(创建临时字符串)
    if (sb.toString().isEmpty()) { ... }
    
    // 正确做法(直接检查长度)
    if (sb.length() == 0) { ... }
  2. ​**优先使用indexOf()替代toString().contains()**​
    当需要检查内容时,indexOf()直接在内部数组中搜索,比创建临时字符串更高效。

版本说明:

  • length() == 0:​所有Java版本适用
  • isEmpty():仅限Java 11及更高版本
  • indexOf():​所有Java版本适用且高效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值