我正在尝试编辑一个给定的字符串,最后使用slice()和search()的组合删除文件扩展名。但是,使用search()时,var vNamePrepared将显示为空。
function site_change() {
var vDocGrabber = "indexmobile.html",
vNamePrepared = vDocGrabber.slice(0, vDocGrabber.search("."));
/*transform vNamePrepared in some way*/
document.getElementById("demo").innerHTML = vNamePrepared + ".php";}
或者,用lastIndexOf()替换search()的确切代码产生了所需的结果。
function site_change() {
var vDocGrabber = "indexmobile.html",
vNamePrepared = vDocGrabber.slice(0, vDocGrabber.lastIndexOf("."));
/*transform vNamePrepared in some way*/
document.getElementById("demo").innerHTML = vNamePrepared + ".php";}
--> indexmobile.php
为什么搜索()不能在这里工作?它不会将整数期间的索引作为整数返回到slice()吗?
第一个问题,如果不符合标准,请道歉。
答案 0 :(得分:5)
search
接受正则表达式,.
匹配正则表达式中的任何非换行符。相当于lastIndexOf
从头开始的是indexOf
。
答案 1 :(得分:2)
正在处理"。"作为一个正则表达式。
逃避"。":
vDocGrabber.search('\\.')
答案 2 :(得分:-3)
我个人从不使用.search方法,因为我在不同的浏览器上提出了错误
相反,我依赖.indexOf,因为它有更好的支持,这里有臭名昭着的w3 site
的一点帮助