Chrome与Firefox中的ToLowerCase

时间:2016-03-08 15:23:31

标签: javascript

以下在Fi​​refox中给出0。但是它在chrome中给出了-1。

var index = "İSTANBUL".toLowerCase().indexOf("is");
console.log(index);

https://jsfiddle.net/81f0yr8w/1/

较低的内容(拉丁大写字母i上方带有一个点“\ u0130”)时,Chrome会添加一个额外字符

"İ".toLocaleLowerCase().length
>2

这是正常行为吗?

1 个答案:

答案 0 :(得分:3)

您可以先对字符串进行编码然后进行比较。这将在Firefox和Chrome中产生相同的结果。

// 0 Chrome // 0 Firefox
encodeURIComponent("İSTANBUL".toLowerCase()).indexOf(encodeURIComponent("İS".toLowerCase())) 

Firefox和Chrome处理它的事实很奇怪。但奇怪的是由w3c规范定义:https://www.w3.org/TR/charmod-norm/#matchingAlgorithm fwiw,你必须首先小写字符串然后编码它。他们不会比赛,除非他们先是同一个案件。

找到Firefox Bug并标记为[812837]的副本。 (https://bugzilla.mozilla.org/show_bug.cgi?id=812837)据报道,它在2011年仍然开放。所以我认为这不是优先事项。