说我有一个变量
tab_something
我需要删除tab_
位。
在php中,使用str_replace
...
将
tabSelect = document.location.hash.substr(1,document.location.hash.length);
(总是tab_something
)
document.write(tabSelect.replace(/tab_/i, ""));
按照我希望的方式工作,始终贯穿所有现代浏览器(即6 +)?
干杯。
答案 0 :(得分:2)
滥用源代码重写作为反射的替代是可能的。我不愿说明显的,但是:也许退后一步,看看你是否可以重新设计一下这个项目,这样你就能找到一个更清洁的解决方案?
答案 1 :(得分:2)
有几件事:
document.location
将在document.URL
之后的某个时候弃用,请考虑使用window.location
。String.substring
,因为它是ECMA-262规范的一部分。
var tabSelect = window.location.hash.substring(1); // remove "#"
tabSelect = tabSelect.replace(/tab_/i, ""); // remove "tab_"
它适用于旧版和现代版浏览器。
答案 2 :(得分:1)
是的,它会。另请注意,您不必在.replace()
中使用正则表达式,.replace('tab_', '');
就可以了。
答案 3 :(得分:1)
如果document.location.hash
始终包含tab_
+您要检索的其他字符串,为什么不利用前缀总是相同的长度?你已经打电话给substring()
了,为什么不让这个功能减少几个字符呢?
window.location.hash.substring(5)
感谢CMS指出window.location
首选document.location
。
答案 4 :(得分:0)
是的,这是一个标准的JavaScript函数,它已经足够长,可以涵盖所有现代浏览器,即6及以上版本。应该工作得很好。
如果您知道它始终是前4个字符,您也可以使用子字符串。 tabSelect.substring(4)
将在tab_
之后的第一个字符开头为您提供所有内容(基于0)。