Javascript indexOf没有在变量中查找文本

时间:2014-06-18 15:48:11

标签: javascript indexof

我确信有一些我想念的简单但我在这里难倒。

问题是我循环遍历字符串数组并使用字符串值使用indexOf搜索该字符串的一部分。第一次围绕循环,索引是找到我正在寻找的东西,但第二次不是。

这是一个小提琴 - http://jsfiddle.net/jeremywrags/uSwjG/1/

似乎不起作用的一行是

var aliasIndex = fromclause.indexOf(" " + tableAlias + " " );

我正在尝试为云应用程序构建一个SQL解析器,这里的用例是当一个表别名时我需要获取原始表名,以便我可以查找表列。第一次循环索引返回索引,然后返回表名。索引周围的第二次是-1,并且不检索表名。

如果我需要提供更多背景信息,请告诉我。

感谢

1 个答案:

答案 0 :(得分:0)

它不匹配,因为在第二遍,tableAlias是字符串" b"(注意空格)。那么你搜索" b "(注意两个前导空格),这不存在。

使用浏览器内置的调试器,而不是使用alert。您可以在代码中设置断点,逐行逐步检查,检查变量等等。这样做可以在查看变量tableAlias时向您显示它有一个领先的空间,希望帮助您找到解决方案。

以下是Chrome调试器中的内容,例如:

Example of debugging

(如果你看看实际调试器版本之上的jsFiddle源代码,你会在代码中看到debugger;语句 - 通常你不需要那个语句,你可以只打开你的页面,使用“Sources”选项卡用于查找您的JavaScript文件,导航到该行,然后单击其左侧的边距以设置断点。但有时[例如,当使用jsFiddle时],debugger;语句很方便。它的作用是,如果调试器是打开的,那么就像断点那样暂停代码的执行。)