JavaScript中替代indexOf的方法

3
我有一个字符串,内容为this is test for alternative。我想要找到for的位置。我知道可以使用alert(myString.indexOf("for"))来实现,但我不想使用indexOf
你有任何其他的想法或建议吗?

jsfiddle

再次强调,我只能使用Javascript。没有jQuery...很遗憾:(

5
为什么不想使用 indexOf? 没有这方面的信息,这个问题就相当奇怪。 - T.J. Crowder
1
请在问题本身中始终包含所有相关的代码和标记,而不仅仅是链接。http://meta.stackexchange.com/questions/118392/add-stack-overfow-faq-entry-or-similar-for-putting-code-in-the-question - T.J. Crowder
@T.J.Crowder:我只是想知道另一种方法……就这样……还有什么问题吗? - Fahim Parkar
1
@ Fahim: “我只是想知道另一种方法。” 再次问一下,为什么?有什么目的吗?需要替代方案的原因是什么?来自FAQ:“您应该只提出基于实际问题的实用且可回答的问题。” - T.J. Crowder
2个回答

5
.search()?

"this is test for alternative".search("for")
>> 13

4
иҜ·жіЁж„ҸпјҢsearch дёҚжҳҜ indexOf зҡ„зӣҙжҺҘжӣҝд»Је“ҒгҖӮдҫӢеҰӮпјҢ "10 * 5 = 50".indexOf("*") жҳҜ 3пјҢдҪҶжҳҜ "10 * 5 = 50".search("*") дјҡжҠӣеҮәдёҖдёӘй”ҷиҜҜгҖӮиҖҢ "Hi, my name is Joe.".indexOf(".") жҳҜ 18 пјҢдҪҶжҳҜ "Hi, my name is Joe.".search(".") жҳҜ 0гҖӮ - T.J. Crowder
2
@T.J.Crowder 这是因为 search 函数需要一个正则表达式参数。在你的例子中,"Hi, my name is Joe.".search("\\.") 返回了预期的值 18。需要澄清的是,search 函数需要一个正则表达式作为参数,而不是直接输入字符串(但也可以)。所以,上述代码通常应该写成 "Hi, my name is Joe.".search(/\./) - Akiva
1
@Akiva:我知道。关键是它不是直接替代品。 - T.J. Crowder

1

你可以编写自己的indexOf函数吗?你可以在源字符串上循环,并检查每个字符是否是你要搜索的单词。

以下是一个未经测试的版本,以便让你有一个想法:

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接