我需要从字符串中检索自定义参数的值。
字符串示例:aaa[111] bbb[222] ccc[333] ddd[444]
我需要为参数111
等获取aaa
的值...
参数名称提前知道(此处:aaa
,bbb
,ccc
,ddd
)。
也许使用正则表达式,但我不知道如何继续。
答案 0 :(得分:0)
试试这个
var output = {};
var str = "aaa[111] bbb[222] ccc[333] ddd[444]";
str.split(/\s+/).forEach(function(val){
var key = val.substring(0, val.indexOf("["));
var value = val.substring( val.indexOf("[") + 1, val.indexOf("]") );
output[key] = value;
});
document.body.innerHTML += JSON.stringify(output,0,4);
您可以使用此输出变量来获取每个参数的值。
output["aaa"]; // outputs 111
答案 1 :(得分:0)
您可以使用str.match
方法。
var str = "aaa[111] bbb[222] ccc[333] ddd[444]";
var strarr=str.match(/\w+\[\w+\]/g);
var val={};
var accounting = [];
for(var i=0;i<strarr.length;i++)
{
var val1 = strarr[i].match(/\w+(?=\[)/);
var val2 = strarr[i].match(/\w+(?=\])/);
val[val1] = val2
}
alert(JSON.stringify(val));
答案 2 :(得分:0)
将String.replace
函数与回调(replacer)一起使用的简单“技巧”:
var str = "aaa[111] ddd[444] bbb[222] ccc[333]",
re = /\b(\w+?)\[(\d+?)\]/g,
result = {};
str.replace(re, function(m, $1, $2){
result[$1] = $2;
});
document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");
现在,result
对象包含所有需要的具有适当值的参数
答案 3 :(得分:0)
这个天真的正则表达式实现是Events.ConvertedText
,它可以用来提取这样的参数:
/(\w+)\[([^\]]+)\]/g
答案 4 :(得分:0)
var string='aaa[111] bbb[222] ccc[333] ddd[444]',
pattern= /(\S+)\[(\d+)\]/g,
result = {},
r;
while ((r = pattern.exec(string)) != null) {
result[r[1]] = r[2];
}
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;