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

如何找出两个字符串的差异并返回不匹配内容?

找出两个字符串的差异字符

你的代码里用match()方法是尝试在目标字符串中匹配完整的对比字符串,因为两个字符串不完全一致,所以返回null,这不是逐字符找差异的正确方式。下面是几种实用的实现方式:

基础逐字符对比(等长字符串)

如果两个字符串长度相同,直接遍历每个位置对比字符,收集不匹配的内容:

const str1 = "zoho";
const str2 = "zogo";
const differences = [];

for (let i = 0; i < str1.length; i++) {
  if (str1[i] !== str2[i]) {
    differences.push({
      位置: i + 1, // 从1开始计数更符合日常习惯
      str1字符: str1[i],
      str2字符: str2[i]
    });
  }
}

console.log(differences);
// 输出: [{ 位置: 3, str1字符: 'h', str2字符: 'g' }]

兼容不同长度的字符串

如果两个字符串长度不同,先取最长长度遍历,缺失的字符用空字符串代替:

const str1 = "zoho";
const str2 = "zogox";
const maxLength = Math.max(str1.length, str2.length);
const differences = [];

for (let i = 0; i < maxLength; i++) {
  const char1 = str1[i] || '';
  const char2 = str2[i] || '';
  if (char1 !== char2) {
    differences.push({
      位置: i + 1,
      str1字符: char1,
      str2字符: char2
    });
  }
}

console.log(differences);
// 输出: [{ 位置: 3, str1字符: 'h', str2字符: 'g' }, { 位置: 5, str1字符: '', str2字符: 'x' }]

简洁写法(数组方法)

用ES6的扩展运算符和数组方法实现更简洁的代码:

const str1 = "zoho";
const str2 = "zogo";

const differences = [...str1]
  .map((char, index) => ({
    位置: index + 1,
    str1字符: char,
    str2字符: str2[index]
  }))
  .filter(item => item.str1字符 !== item.str2字符);

console.log(differences);

内容的提问来源于stack exchange,提问作者Ramesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:00:58