Java中如何判断一个String是否被另一个String包含?
Java中判断字符串是否被另一个字符串包含(避免NullPointerException)
Java标准库没有提供直接的isContained方法来判断一个字符串是否被另一个包含,但你完全可以通过反转调用顺序的方式实现需求,同时还能避免因testStr为null导致的NullPointerException。
核心解决方案:反转contains调用顺序
因为你要比较的AnyClass.STRING_CONSTANT是常量,它肯定不为null,所以直接用这个常量调用contains方法,把可能为null的testStr作为参数传入即可:
final String testStr = anyMethod(); // 可能返回null if (AnyClass.STRING_CONSTANT.contains(testStr)) { // 执行你的业务逻辑 }
关键说明:
- 当
testStr为null时,contains(null)会直接返回false,不会抛出NPE,因为String.contains内部处理了null参数的情况(底层调用indexOf(null)返回-1,因此contains返回false)。 - 这个写法完全替代了先判断
testStr != null再调用contains的冗余代码。
自定义边界场景处理(可选)
如果你需要区分testStr为null和testStr确实不被包含的情况,可以补充空判断:
final String testStr = anyMethod(); if (testStr != null && AnyClass.STRING_CONSTANT.contains(testStr)) { // 仅当testStr非null且被包含时执行逻辑 }
如果希望把null视为空字符串处理(即空字符串被任何常量包含),可以用Objects.toString统一转换:
import java.util.Objects; final String testStr = anyMethod(); // 把null转为空字符串,再判断是否被包含 if (AnyClass.STRING_CONSTANT.contains(Objects.toString(testStr, ""))) { // 业务逻辑 }
内容的提问来源于stack exchange,提问作者Philippe Gioseffi
相关产品推荐
相关产品推荐

