You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中判断一个字符串是否包含另一个字符串?

字符串包含检查的正确实现

为什么你的代码返回false?

includes() 方法的作用是检测完整的连续子字符串是否存在于目标字符串中。你定义的 str2 是 'lo ou to uc',这个完整的字符串在 str1 ('love you too much') 里根本找不到,所以返回 false 是符合预期的结果。

两种常见需求的实现方式

根据你的实际需求,分两种情况处理:

1. 检查完整连续子串是否存在

如果你的需求确实是判断 str2 作为一个整体是否是 str1 的子串,那现有代码是完全正确的。此时返回 false 说明两个字符串确实没有这种包含关系,你需要确认 str2 是否是你真正要查找的目标子串。

2. 检查str2的所有片段是否都在str1中存在

如果你实际想验证的是 str2 里按空格分割的每个小片段(比如 lo、ou、to、uc)是否都能在 str1 中找到,可以用下面的代码:

let str1 = 'love you too much';
let str2 = 'lo ou to uc';

// 分割片段并过滤空值(避免连续空格的影响)
const fragments = str2.split(' ').filter(frag => frag.trim());
// 验证所有片段是否都存在于str1
const allFragmentsIncluded = fragments.every(frag => str1.includes(frag));

if (allFragmentsIncluded) {
  console.log('str1包含str2的所有片段');
} else {
  console.log('str1不包含str2的所有片段');
};

这段代码的逻辑:

  • split(' ') 把 str2 按空格拆分成片段数组
  • filter(frag => frag.trim()) 过滤掉可能的空字符串(比如多个连续空格产生的空元素)
  • every() 方法会遍历所有片段,只有当所有片段都满足存在于str1中的条件时,才返回 true

额外补充:忽略大小写的检查

如果需要忽略大小写进行匹配,可以在检查前把两个字符串统一转成小写(或大写):

const allFragmentsIncluded = fragments.every(frag => 
  str1.toLowerCase().includes(frag.toLowerCase())
);

内容的提问来源于stack exchange,提问作者Faruk KÖSE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:50:34