我来自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'")
有没有办法在一行如上?
答案 0 :(得分:0)
答案 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