比较列表和文本
逐行比较两个列表:找出同时存在、只在其一或在任一列表中的行,或并排查看带标记的行差异。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const a = ['a', 'b', 'c', 'b']
const b = ['b', 'd']
const exclude = new Set(b)
console.log([...new Set(a)].filter((line) => !exclude.has(line)).join('\n'))功能
逐行比较两个列表。作为集合:每行一次(并集)、两个列表都有的行(交集)、只在 A 或只在 B 的行,以及恰好只在其一的行。作为文本:行差异会把每行标记为未更改、已删除或已添加,可统一显示或并排显示。
使用方法
- 在列表 A 和列表 B 中每行输入或粘贴一项。文本文件可拖入列表 A。
- 选择运算。在“更多”中关闭区分大小写,让
Apple与apple视为相同;或开启忽略行首尾空白,让末尾的空格不会使行不同。结果按你输入的样子保留各行。 - 复制或下载结果。删除空行会先去掉两个列表中的空行。
示例
列表 A 为 a, b, c, d,列表 B 为 b, c 时:
A − B 得到 a 和 d,A ∩ B 得到 b 和 c,行差异把 a 和 d 标记为从 A 中删除。
须知
- 集合运算忽略行的顺序,每行按首次出现的顺序只给出一次。
- 行差异自上而下比较列表,所以移动过的行会在一处显示为删除,在另一处显示为添加。
- 并排视图中,已更改的行共用一行表格;没有对应的行有一侧为空。
- 只在你选择忽略的方面不同的行视为相同,并按列表 B 中的样子显示。
这些运算是什么意思?
A ∪ B 列出任一列表中的每一行,每行一次。A ∩ B 保留两个列表都有的行。A − B 保留只在 A 的行,B − A 保留只在 B 的行。最后一种运算保留恰好只在一个列表中的行。每个结果都没有重复,并保持首次出现的顺序。
常见问题
集合运算和行差异有什么区别?
集合运算把列表当作集合比较,所以行的顺序无关紧要。行差异把它们当作自上而下的文本比较,并像代码评审一样把每行标记为未更改、已删除或已添加。
可以忽略大小写和空格吗?
可以。在“更多”中关闭区分大小写,并开启忽略行首尾空白。仅在这方面不同的行视为相同,结果会按你输入的样子保留它们。
这个工具会把我的列表发送到别处吗?
不会。一切都在你的浏览器中进行。你输入的内容不会发送到我们的服务器。