我有這個字符串:'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