在包含键/值的字符串中查找JavaScript值

4

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

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

我需要查找字符串中是否包含特定类型(例如,使用indexOf搜索"{type3|"),然后从该对中检索值。

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

你有什么想法吗?


是的,正则表达式似乎是一个不错的解决方案。 - elclanrs
如果你想知道我为什么需要这个,我使用这种格式将多个值存储在一个cookie中。它运行得很好,比为单个程序管理大量的cookie要简单。 - Tony Payne
2个回答

3

您可以使用:

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

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

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' }

将字符串转换为如下对象。现在,查找变得轻松和更快。
转换结果:

将字符串转换为如下对象。现在,查找变得轻松和更快。


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