我需要比较 2 个字符串,有通配符吗?
如果没有通配符,我该怎么做?要比较的字符串是子字符串的串联,例如由","分隔的子字符串。
例:
var str1 = "HHH-H-HHH,OOO-O-OOO"
var str2 = "HHH-$-HHH,OOO-O-OOO"
var str3 = "HHH-H-HHH,OOO-$-OOO"
var str4 = "HHH-H-HHH,OOO-U-OOO"
str1.equals(str2) // SHOULD BE TRUE
str1.equals(str3) // SHOULD BE TRUE
str1.equals(str4) // SHOULD BE FALSE
使用正则表达式:
var str1 = "HHH-H-HHH,OOO-O-OOO"
var str2 = "HHH-H-HHH,OOO-U-OOO"
var rgx1 = /HHH-.*-HHH,OOO-O-OOO/
var rgx2 = /HHH-H-HHH,OOO-.*-OOO/
console.log(rgx1.test(str1)) // SHOULD BE TRUE
console.log(rgx2.test(str1)) // SHOULD BE TRUE
console.log(str1 === str2) // SHOULD BE FALSE
正则表达式中的.*
运算符匹配任何内容,因此这是您的通配符。请注意,这样您必须区分值和模式。也就是说,有您要检查的字符串,以及要检查它们的模式(此处由正则表达式表示(。
如果要与模式进行比较,请使用正则表达式(前两个示例(。如果要比较两个值,只需直接使用 ===
运算符(最后一个示例(即可。