在String中查找Javascript值,其中String包含键/值

时间:2014-03-20 11:10:47

标签: javascript regex indexof

我有一个字符串,其中包含以下形式的多个参数/值对:

{type1|value1}{type2|value2} .....

我需要查找特定类型是否在字符串中(例如,当前正在使用indexOf搜索"{type3|")但是我需要从该对中检索该值。

我可以将字符串从起点放入另一个字符串,然后搜索值("|" and "}")的开头和结尾的位置,但我确信应该有一种更简单的方法,可能使用正则表达式。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用:

s='{type1|value1}{type2|value2}{type3|value3}{foo|bar}'
search='type3';
m = s.match(new RegExp('\\{' + search + '\\|([^}]+)'));

if (m)
   val=m[1]; //=> "value3"

答案 1 :(得分:2)

var my_string = "{type1|value1}{type2|value2}";
var regEx = /\{(.*?)\}/g,
    match, object = {};

while ((match = regEx.exec(my_string)) !== null) {
    var key_value = match[1].split("|");
    object[key_value[0]] = key_value[1];
}

console.log(object);
# { type1: 'value1', type2: 'value2' }

将字符串转换为这样的对象。现在,查找很简单,速度更快。