在对文本进行对比时,难免需要自己定制对比规则;本文就详细讲解一下有名的对比工具 BeyondCompare 实现自定义对比规则的方法 和 针对 JavaScript代码 的一些实用的对比规则;
目录
- 一、问题
- 二、忽略空格相关的差异
- 三、设置自定义的忽略规则(忽略行尾分号、单双引号的差异)
- 方式1:设置不重要的文本
- 方式2:添加语法元素
内容
一、问题
开发工具往往都有格式化代码的功能,然而,JavaScript代码 的格式规范有多种,不同 开发工具 对 JavaScript代码 的格式化规范 可能不一样,比如,语句结束处默认带不带 分号 ;
,导入模块时,路径字符串是用用单引号 还是 双引号,等等,这些差异,导致在对比 JavaScript 代码时,往往会出现很多的差异提示,如下所示:
双引号分号.js
import GBY from "GBY";
var gby = new GBY()
var dyx = "代艳霞";
gby.name = "郭斌勇"
console.log(gby) ;
单引号无分号.js
import GBY from 'GBY'
var gby = new GBY()
var dyx = "代艳霞"
gby.name = "郭斌勇"
console.log(gby)
对比效果:
问题注意:图中高亮部分均是被认为是有差异的部分;
从图中可以看出,对比工具把以下区别认为是差异:
- 单引号 与 双引号;
- 行尾 分号 和 行尾 没有 分号;
- 空行;
- 连续的空格;
- 行首空格;
- 行尾空格;
而这些在 JS 中都是等效的;
二、忽略空格相关的差异
-
在
重要应用菜单栏:会话/会话设置/重要
选项卡中,取消勾选以下选项:
-
在对比会话操作界面,单击
次要工具栏:次要
按钮,即可将不重要的差异视为相同,如下图图例所示:
可以忽略如下差异:
- 空行;
- 连续的空格;
- 行首空格;
- 行尾空格;
三、设置自定义的忽略规则(忽略行尾分号、单双引号的差异)
在 BeyondCompare 中设置自定义忽略规则的方式有2种:
- 设置不重要的文本
- 添加语法元素
这2种方式都可能通过设置正则表达式来匹配需要忽略的内容;
忽略行尾分号的正则表达式: ;+(\s*;*)*$
;
忽略单双引号的正则表达式: '|"
;
下面就以设置 忽略行尾分号 的规则为例,介绍一下这两种自定义忽略规则方式的步骤;
方式1:设置不重要的文本
在 应用菜单栏:会话/会话设置/重要
中
- 在
不重要的文本
区域下面点击+
号 图标,添加一个文本项;
添加不重要的文本 - 在
要查找的文本
面板中填入以下正则表达式;+(\s*;*)*$
,并 勾选正则表达式
选项:
要查找的文本 - 在对比会话操作界面,单击
工具栏:次要
按钮,即可将不重要的差异视为相同,如下图图例所示:
次要
方式2:添加语法元素
- 点击
应用菜单栏:会话/会话设置/重要
面板中的编辑语法...
按钮;
编辑语法按钮 - 点击
语法
选项卡中的+
号 图标,添加一个语法规则;
语法面板 - 在弹出的元素面板中 选择
基本
分类,在文本匹配
中填入以下正则表达式;+(\s*;*)*$
,并 勾选正则表达式
选项,然后点击确定,如下图所示:
语法元素面板 - 在
应用菜单栏:会话/会话设置/重要
面板中的标记对比较来说是重要的语法元素
列表中 取消勾选 刚才添加的 语法元素行尾分号
,然后点击确定
按钮,如下图所示:
取消勾选添加的语法元素 - 在对比会话操作界面,单击
工具栏:次要
按钮,即可将不重要的差异视为相同,如下图图例所示:
次要
元素各种类型的说明:
- 基本:匹配特定的文本部分。可以表示为正则表达式;
- 分界:匹配文本的起始点和文本的结束点。可以在行尾停止;
- 列表:基本匹配列表。可以用来代替单独的Basic元素;
- 列:在行和结束位置的数字起始位置定义的文本部分;
- 行:匹配文本的起始点或第一行,并结束用户定义的行数;
网友评论