以下在Firefox中给出0.但是它在chrome中给出了-1.
var index = "?STANBUL".toLowerCase().indexOf("is");
console.log(index);
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/81f0yr8w/1/
较低的外壳时,Chrome会增加一个额外的字符(拉丁语大写字母i,上面有一个点"\ u0130")
"?".toLocaleLowerCase().length
>2
Run Code Online (Sandbox Code Playgroud)
这是正常的行为吗?
您可以先对字符串进行编码,然后进行比较。这将在 Firefox 和 Chrome 中产生相同的结果。
\n\n// 0 Chrome // 0 Firefox\nencodeURIComponent("\xc4\xb0STANBUL".toLowerCase()).indexOf(encodeURIComponent("\xc4\xb0S".toLowerCase())) \nRun Code Online (Sandbox Code Playgroud)\n\nFirefox 和 Chrome 的处理方式不同这一事实很奇怪。但奇怪的是 w3c 规范在这里定义: https: //www.w3.org/TR/charmod-norm/#matchingAlgorithm fwiw,您必须先将字符串小写,然后对其进行编码。除非它们首先大小写相同,否则它们不会匹配。
\n\n发现Firefox Bug并标记为 [812837] 的重复项。( https://bugzilla.mozilla.org/show_bug.cgi?id=812837 ) 该报告于 2011 年报告,目前仍处于开放状态。所以我想这不是一个优先事项。
\n| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |