【问题标题】:Javascript string searching issueJavascript字符串搜索问题
【发布时间】:2013-03-18 14:33:30
【问题描述】:

我是 JS 的一名自学成才的业余爱好者,我认为是时候在这里注册了 :)

我正在尝试(但失败)编写一个脚本,该脚本从字符串数组中取出单个字符串,并检查它是否包含下拉菜单中的某些变量关键字。我的代码:http://jsfiddle.net/apMsc/1/

我认为下拉菜单和 search/indexOf 有一些冲突。如果关键字位于字符串的开头,我的代码似乎才有效。如果关键字被埋得更深,search() 返回 -1(我也试过indexOf)。

例如:

document.getElementById('result').innerHTML = test3array[0].indexOf(drop1);

其中 test3array[0] 是字符串 value1@-@ value2@-@ value1@-@ value2drop1 是菜单中的变量。

如果我搜索 value1,脚本将起作用,但除非我将其移到开头,否则不会搜索 value2。我也尝试使用 new RegExp(drop1) 基于此处以前的主题,但它没有用。

任何建议将不胜感激。

【问题讨论】:

    标签: javascript string search


    【解决方案1】:

    这是因为test3array[0]drop1 都以换行符开头。如果您想摆脱换行符,请在这些变量上调用 trim()。例如,这有效:

    document.getElementById('result').innerHTML =
        test3array[0].trim().indexOf(drop1.trim());
    

    编辑:这里有一些关于提问的建议:您尝试找出代码中不起作用的部分并将其发布在此处。在提出问题之前找到一个最小的测试用例是一个好主意,甚至通常会引导您找到解决方案,但是当您这样做时,您还应该检查您的最小测试用例是否也重现了该错误。就其本身而言,document.getElementById('result').innerHTML = test3array[0].indexOf(drop1); 行是正确的。

    【讨论】:

    • 公平警告:IE8 不支持修剪
    • 成功了,谢谢 :) 在我逐渐剥离其他所有内容之后,应该是一个简化的示例。我想它可以再最小化一些......
    • @Alex 关于 MaxArt 所说:您可能想使用 $.trim 左右来兼容 IE8。
    • 感谢您的警告,MaxArt。我将尝试修复源 div 以完全避免换行,但如果这不起作用,那也没什么大不了的。这不是专业用途 :) 啊,$ 也可以工作 :)
    猜你喜欢
    • 2013-04-08
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多