私はこの文字列を持っています:'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')、1 つまたは複数の空白単位、1=
文字、1 つまたは複数の空白文字で構成される正規表現パターンを作成します。空白が常に存在するとは限らない場合は、変更する方がよい場合がありますnewNeedle = needle + '\\s*\\=\\s*\\w+'
(+
一致は「1 つ以上」、*
一致は「0 以上」)。parsed
変数に格納します。parsed
し、0 個以上の空白の後に 0 個以上の空白が続くパターンで効果的に分割し、分割された=
部分をparts
配列変数に格納します。parts
ます。2 行で 1 つの 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);
参考文献: