为什么lastIndexOf()工作而search()不工作?

时间:2017-08-23 18:55:56

标签: javascript

我正在尝试编辑一个给定的字符串,最后使用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()吗?

第一个问题,如果不符合标准,请道歉。

3 个答案:

答案 0 :(得分:5)

search接受正则表达式,.匹配正则表达式中的任何非换行符。相当于lastIndexOf从头开始的是indexOf

答案 1 :(得分:2)

正在处理"。"作为一个正则表达式。

逃避"。":

vDocGrabber.search('\\.')

答案 2 :(得分:-3)

我个人从不使用.search方法,因为我在不同的浏览器上提出了错误

相反,我依赖.indexOf,因为它有更好的支持,这里有臭名昭着的w3 site

的一点帮助