IE8 没有在 jQuery 地址中执行子字符串

Posted

技术标签:

【中文标题】IE8 没有在 jQuery 地址中执行子字符串【英文标题】:IE8 not performing substring within jQuery Address 【发布时间】:2013-01-16 13:44:46 【问题描述】:

在 jQuery 地址内target[1] 可以是Films-by-Name-C7。我使用以下内容提取7

(target[1].lastIndexOf('?') > 0 ?target[1].slice(0, target[1].indexOf("?")).substr((target[1].lastIndexOf('C')+1)):target[1].substr(-(target[1].length-target[1].lastIndexOf('C')-1)))

这适用于除 IE8 之外的所有浏览器。我不知道它为什么这样做。当我在Fiddle it also doesn't work 中尝试时。那么如何在ie8中从Films-by-Name-C7中提取7呢?

【问题讨论】:

【参考方案1】:

IE.indexOf() 函数,要定义确切的规范版本,请在尝试使用之前运行它:

Check this link

因为你需要七个 this can be the solution

【讨论】:

检查小提琴。它不在数组上,而是在变量上,它仍然不起作用。 .indexOf 在 IE 那么我无法从Films-by-Name-C7 中提取7 吗? alert((typeof test.lastIndexOf('?') !== undefined ?test.slice(0, test.lastIndexOf("?")).substr((test.lastIndexOf('C')+1)):test.substr(-(test.length-test.lastIndexOf('C')-1)))); 什么都不给 alert((testvar.lastIndexOf('?') != "-1" ?testvar.slice(0, testvar.lastIndexOf("?")).substr((testvar.lastIndexOf('C')+1)):testvar.substr(-(testvar.length-testvar.lastIndexOf('C')-1)))); 同样的事情。我猜 lastIndexOf 也不受支持 不知何故应该可以从Films-by-Name-C7 中提取7 这是使该站点适用于ie8 的最后一件事【参考方案2】:

你的代码的问题是substr函数的负值

(target[1].lastIndexOf('?') > 0 ? 
    target[1].slice(0, target[1].indexOf("?")).substr((target[1].lastIndexOf('C')+1)) :
    target[1].substr(-(target[1].length - target[1].lastIndexOf('C')-1)))

substr 的负值在浏览器中不起作用

【讨论】:

取决于您的要求。如果你的字符串总是以数字结尾并且你总是需要最后一个数字,那么你可以使用 substr(target[1].length-1,target[1].length)

以上是关于IE8 没有在 jQuery 地址中执行子字符串的主要内容,如果未能解决你的问题,请参考以下文章

PB中取字符串子串的函数是啥

[在python中使用正则表达式搜索字符串子字符串

如何更改python字符串子字符串信息

子串子序列问题

使用 Python 的字符串子序列内核和 SVM

数组篇在python中如何查找最长字符串子串