如何比较两个字符串并得到不同的部分
How to compare two Strings and get Different part
现在我有两个字符串,
var str1 = "A10B1C101D11";
var str2 = "A1B22C101D110E1";
我要做的是区分它们之间的区别,结果看起来像
A10B1C101D11
A10 B22 C101 D110E1
它遵循相同的模式,一个字符和一个数字。如果这个角色不存在,或者他们之间的数字不同,我会说他们是不同的,并突出不同的部分。正则表达式或其他好的解决方案可以做到这一点吗?提前感谢!
让我首先说明regexp可能不是最好的工具。由于字符串具有您所知道的简单格式,因此将字符串解析为令牌,然后比较令牌将更快更安全。
然而,你可以在Regexp中做到这一点,尽管在javascript中你受到缺乏向后看的阻碍。
这样做的方法是使用负向前看来防止包含在其他字符串中的匹配。但是,由于javascript不支持向后看,您可能需要从两个方向进行搜索。
我们通过连接字符串来实现这一点,并使用可用于测试的分隔符。
如果使用'|'作为分隔符,则regexp变为;
/('D'd*)(?=(?:'||'D.*'|))(?!.*'|(.*'d)?'1('D|$))/g
查找第二个字符串中第一个字符串中不存在的标记,执行;
var bothstring=str2.concat("|",str1);
var re=/('D'd*)(?=(?:'||'D.*'|))(?!.*'|(.*'d)?'1('D|$))/g;
var match=re.exec(bothstring);
对re.exec的后续调用将返回后面的匹配项。因此,您可以像下面的示例那样遍历它们;
while (match!=null){
alert("'""+match+"'" At position "+match.index);
match=re.exec(t);
}
如前所述,它在str2中给出与str1不同的令牌。要获得str1中不同的标记,请使用相同的代码,但在连接字符串时更改str1和str2的顺序。
如果处理潜在的脏输入,上面的代码可能不安全。特别是,如果输入一个像"A100|A100"这样的字符串,它可能会行为不当,第一个A100不会被认为有一个缺失的对象,因为regexp不知道源应该是两个不同的字符串。如果这是一个潜在的问题,那么搜索分隔字符
你调用将字符串分割成一个数组
var aStr1 = str1.split('');
var aStr2 = str2.split('');
然后检查哪个字符更多,并保存较小的数字
var totalCharacters;
if(aStr1.length > aStr2.length) {
totalCharacters = aStr2.length
} else {
totalCharacters = aStr1.length
}
和循环比较
var diff = [];
for(var i = 0; i<totalCharacters; i++) {
if(aStr1[i] != aStr2[i]) {
diff.push(aStr1[i]); // or something else
}
}
在最后,您可以连接较大字符串中的最后一个字符(因为它们显然与另一个不同)。
它对你有帮助吗?
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 必须检查长度,并在文本框中允许一些特殊字符
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 将字符串分组为n个字符的块,并应用替换
- 忽略任何非小写字符(如数字、大写字母和符号)并获取k的值
- 如何将返回的路由对象串行化并本地存储在传单路由机中
- 在Javascript中查找子字符串,并前置/附加一些字符
- 在粘贴到文本字段Jquery时检查并突出显示不支持的特殊字符
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 用js更改字符代码并显示新字符
- 如果img src以http://img.youtube.com/vi/并在任何字符后替换为youtube视频ifram
- 有效地串行化(并从nodejs读取)int数组
- javascript查找字符串并删除以下所有字符
- 计算文本块中的字符数,并将其拆分为两列
- 如何解析键盘字符并显示其等效图形
- 打破ng中的字符数组,重复并设置每个字符自己的输入标记
- 匹配单词中两个相等的字符,并替换为一个RE
- 截断段落的前100个字符并隐藏段落的其余内容,以显示/隐藏更多/更少链接的其余内容
- 如何使用 javascript 解析字符串并将其分成两部分的特殊字符