在javascript中是否有等效的find_first_of c ++字符串方法

时间:2015-03-16 13:13:21

标签: javascript

我来自C ++背景,目前正在开发node.js服务器应用程序。 我想知道Javascript字符串中是否存在等效的find_first_of C ++字符串类方法。

基本上我会有一个字符串 var str ="abcd=100&efgh=101&ijkl=102&mnop=103"&分隔单词的顺序可以是随机的。所以,我想做类似以下的事情:

str.substr(str.find("mnop=") + string("mnop=").length, str.find_first_of("&,\n'\0'")

有没有办法在一行如上?

2 个答案:

答案 0 :(得分:0)

您可能会发现search功能很有用。

"string find first find second".search("find"); // 7

此外,您还可能会发现this问题很有用。

答案 1 :(得分:0)

没有直接的等价物,但你总是可以使用正则表达式:

var str ="abcd=100&efgh=101&ijkl=102&mnop=103";
console.log(str.match(/&mnop=([^&]+)/)[1]);

但是,在这种特定情况下,最好使用dedicated module

var qs = require('querystring');
var vars = qs.parse(str);
console.log(vars.mnop);

如果你真的想要一个行为类似于find_first_of的方法,可以这样实现:

String.prototype.findFirstOf = function(chars, start) {
    var idx = -1;
    [].some.call(this.slice(start || 0), function(c, i) {
        if(chars.indexOf(c) >= 0)
            return idx = i, true;
    });
    return idx >= 0 ? idx + (start || 0) : -1;
}

console.log("abc?!def??".findFirstOf('?!'));    // 3
console.log("abc?!def??".findFirstOf('?!', 6)); // 8