我有一个字符串,其中包含以下形式的多个参数/值对:
{type1|value1}{type2|value2} .....
我需要查找特定类型是否在字符串中(例如,当前正在使用indexOf搜索"{type3|"
)但是我需要从该对中检索该值。
我可以将字符串从起点放入另一个字符串,然后搜索值("|" and "}")
的开头和结尾的位置,但我确信应该有一种更简单的方法,可能使用正则表达式。
有什么想法吗?
答案 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' }
将字符串转换为这样的对象。现在,查找很简单,速度更快。