我有三个案例:
1)当字符串看起来像/televisions?3dtv=true
时 - 我需要从中删除?3dtv=true
2)当字符串看起来像/televisions?3dtv=true&brand=panasonic
时 - 我需要从中删除&brand=panasonic
3)当字符串看起来像这样/televisions?3dtv=true&brand=panasonic&led=true
时 - 我需要在最后一个之后删除所有内容。包括&所以 - &led=true
我猜数字2和3是相同的。
任何帮助将不胜感激。
答案 0 :(得分:4)
不幸的是,lastIndexOf
仅在IE9中受支持,因此您可以考虑使用正则表达式:
var href = $(obj).next().attr('href').replace(/(?:&[^&]*|\?[^?]*)$/, '');
我根据新要求更新了答案。该表达式将替换上一个&
的所有内容,如果没有,则替换?
。由于交替从左到右进行评估,因此保证&...
如果存在则被替换。
表达解释:
/ # start expression
(?: # open non-capturing group
& # match & literally
[^&]* # match any character but & as often as possible
| # OR
\? # match ? literally
[^?]* # match any character but ? as often as possible
) # close group
$ # match the end of the string
/ # end expression
答案 1 :(得分:2)
您可以使用子串的组合lastIndexOf。
var str = "/televisions?brand=panasonic?3dtv=true";
var newstr = str.substring(0, str.lastIndexOf('?'));
请注意,这只是JavaScript,不使用jquery库的任何方面。