Java中如何在String.contains中跳过动态变量子串?
最优实现方式分析
首先明确字符串结构:
原代码中welcomeMessage由三部分拼接而成:"Welcome" + 动态name + ", You have notification!"
要让welcomeMessage.contains("Welcome, You have notification!")返回true,核心是让拼接后的字符串包含目标子串。目标子串的结构是"Welcome" + "" + ", You have notification!",因此最优实现是将name赋值为空字符串"":
String name = ""; String welcomeMessage = "Welcome" + name + ", You have notification!"; // 此时welcomeMessage完全等于目标子串,contains方法必然返回true
如果业务场景中name不能为空,那需要调整welcomeMessage的拼接逻辑来确保目标子串存在:
- 比如固定在
name前后添加分隔符,但这会改变原字符串的语义; - 或者直接构造包含目标子串的
welcomeMessage,但这会忽略name的动态值,不符合常规业务逻辑。
综上,在不改变原代码拼接逻辑的前提下,让name为空字符串是最直接、性能最优的实现方式——既不需要额外的字符串处理,也完全满足contains方法的返回要求。
内容的提问来源于stack exchange,提问作者MPK
相关产品推荐
相关产品推荐

