我有这个字符串:'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
变量的对象。更新上面,略有下降,因为两行创建一个正则表达式只是傻:
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);
参考文献:
名称/值对总是会先出现吗?会不会有一致的名字? – 2012-08-12 15:12:46
字符串从哪里来?如果它使用的是URL查询字符串格式(例如'foo = bar&this = is&not = necessary'),则会更方便。然后你会用相应的函数解析它。 – 2012-08-12 15:14:48