我有这个字符串:'foo = bar; this = is; not = necessary'
我想得到这个结果:{"name" : "foo", "value" : "bar"}
没必要,后面是什么 ;
我知道,我应该使用一些正则表达式,但我不太了解正则表达式的工作原理。
谢谢提前,
我有这个字符串:'foo = bar; this = is; not = necessary'
我想得到这个结果:{"name" : "foo", "value" : "bar"}
没必要,后面是什么 ;
我知道,我应该使用一些正则表达式,但我不太了解正则表达式的工作原理。
谢谢提前,
你可以使用:
var values='foo = bar; this = is; not = necessary'.split('; ')[0].split(' = ');
var obj={"name" : values[0], "value" : values[1]}
这样你就可以:
'foo = bar; this = is; not = necessary'.split('; ')
,它返回['foo = bar','this = is','not = necessary']
'foo = bar; this = is; not = necessary'.split(';')[0]
给'foo = bar'
'foo = bar; this = is; not = necessary'.split(';')[0].split(' = ')
,这给了['foo','bar']
一种使用正则表达式在特定字符串中搜索指定名称的方法,该名称将匹配foo = bar
字符串的一部分:
function getNameValuePair(string, needle) {
if (!string || !needle) {
return false;
}
else {
var newNeedle = needle + '\\s+\\=\\s+\\w+',
expr = new RegExp(newNeedle),
parsed = string.match(expr).join(),
parts = parsed.split(/\s+\=\s+/),
returnObj = {'name' : parts[0], 'value' : parts[1]};
return returnObj;
}
}
var string = 'foo = bar; this = is; not = necessary',
nameValueObj = getNameValuePair(string, 'foo');
console.log(nameValueObj);
当然,这可以进行调整以更适合您的要求。
然而,事实上:
false
。needle
('foo' 在这种情况下),后跟一个或多个空白单元,后跟一个=
字符,然后是一个或多个空白字符。如果空白可能并不总是存在,最好更改为newNeedle = needle + '\\s*\\=\\s*\\w+'
(+
匹配“一个或多个”,*
匹配“零个或多个”)。parsed
变量中,parsed
变量,有效地拆分零个或多个空格后跟一个=
零个或多个空格的模式,将分隔的部分存储在parts
数组变量中,parts
变量构造对象。稍微更新了上面的内容,因为创建一个 RegExp 的两行代码很愚蠢:
function getNameValuePair(string, needle) {
if (!string || !needle) {
return false;
}
else {
var expr = new RegExp(needle + '\\s+\\=\\s+\\w+'),
parsed = string.match(expr).join(),
parts = parsed.split(/\s+\=\s+/),
returnObj = {'name' : parts[0], 'value' : parts[1]};
return returnObj;
}
}
var string = 'foo = bar; this = is; not = necessary',
nameValueObj = getNameValuePair(string, 'foo');
console.log(nameValueObj);
参考: