检查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 + "'");}}
}
性能建议:
-
避免不必要的
toString()
转换// 错误做法(创建临时字符串) if (sb.toString().isEmpty()) { ... }// 正确做法(直接检查长度) if (sb.length() == 0) { ... }
-
**优先使用
indexOf()
替代toString().contains()
**
当需要检查内容时,indexOf()
直接在内部数组中搜索,比创建临时字符串更高效。
版本说明:
length() == 0
:所有Java版本适用isEmpty()
:仅限Java 11及更高版本indexOf()
:所有Java版本适用且高效