比较JavaScript中的以下特殊字符会返回不合适的结果吗?

时间:2009-10-22 06:30:05

标签: javascript

有一种情况,我收到一个包含以下特殊字符的字符串:

<!@#$%^&*()_+|}{":?></.,';][=-`~DS0>

在JavaScript中使用double等于(==)运算符对此字符串执行比较操作时,它不会产生适当的结果。

虽然两个字符串都包含相同的指定字符串,但比较操作不会返回true。

我的案例在JavaScript中会有点像这样翻译:

var strValue = "<!@#$%^&*()_+|}{":?></.,';][=-`~DS0>";
var itrValue = "<!@#$%^&*()_+|}{":?></.,';][=-`~DS0>";
if (itrValue == strValue) {
    alert("True");
} else {
    alert("false");
}

4 个答案:

答案 0 :(得分:3)

当且仅当字符串相同时才返回true。如果要确定字符串是否在另一个字符串中,可以使用indexof:http://www.quirksmode.org/js/strings.html#indexof

答案 1 :(得分:2)

首先:我认为你需要使用反斜杠(类似于\“)来转义那些引号。

第二:据我所知,这两个字符串不相同。您可能想要尝试更像indexof(W3学校参考)的内容,正如教皇所说的那样。

答案 2 :(得分:0)

您可以使用indexOf方法,如果无法找到索引作为上述状态的两个答案,则返回-1。

稍微不同(不完全确定你是否正在寻找这个,indexOf可能是你最好的选择)是使用String.match或String.split方法。如果没有匹配,String.match将返回null,否则它将返回包含您的字符串的所有元素的数组(EG:

var str = "Test123 ABC Test 123Test ABC"
var macthes = str.match("/Test/g") // You can have any regular expression here
document.write(matches[0])
document.write(matches[1])
document.write(matches[2])

将生成Test123 Test 123Test String.split将生成一个以初始字符串分割的字符串数组。

答案 3 :(得分:0)

我刚刚在字符串中转义了双引号,我从true运算符中得到了一个很好的== ...

var strValue = "<!@#$%^&*()_+|}{\":?></.,';][=-`~DS0>";
var itrValue = "<!@#$%^&*()_+|}{\":?></.,';][=-`~DS0>";
alert(strValue == itrValue)