我确信有一些我想念的简单但我在这里难倒。
问题是我循环遍历字符串数组并使用字符串值使用indexOf搜索该字符串的一部分。第一次围绕循环,索引是找到我正在寻找的东西,但第二次不是。
这是一个小提琴 - http://jsfiddle.net/jeremywrags/uSwjG/1/
似乎不起作用的一行是
var aliasIndex = fromclause.indexOf(" " + tableAlias + " " );
我正在尝试为云应用程序构建一个SQL解析器,这里的用例是当一个表别名时我需要获取原始表名,以便我可以查找表列。第一次循环索引返回索引,然后返回表名。索引周围的第二次是-1,并且不检索表名。
如果我需要提供更多背景信息,请告诉我。
感谢
答案 0 :(得分:0)
它不匹配,因为在第二遍,tableAlias
是字符串" b"
(注意空格)。那么你搜索" b "
(注意两个前导空格),这不存在。
使用浏览器内置的调试器,而不是使用alert
。您可以在代码中设置断点,逐行逐步检查,检查变量等等。这样做可以在查看变量tableAlias
时向您显示它有一个领先的空间,希望帮助您找到解决方案。
以下是Chrome调试器中的内容,例如:
(如果你看看实际调试器版本之上的jsFiddle源代码,你会在代码中看到debugger;
语句 - 通常你不需要那个语句,你可以只打开你的页面,使用“Sources”选项卡用于查找您的JavaScript文件,导航到该行,然后单击其左侧的边距以设置断点。但有时[例如,当使用jsFiddle时],debugger;
语句很方便。它的作用是,如果调试器是打开的,那么就像断点那样暂停代码的执行。)