Javascript 从基于“0”的响应中获取值;预期回应“;表达
我有一个预期的响应,可以是任何格式,但例如:Javascript 从基于“0”的响应中获取值;预期回应“;表达,javascript,Javascript,我有一个预期的响应,可以是任何格式,但例如: myfoo={FOO}&mybar={BAR}&mybaz={BAZ} 然后是响应字符串: myfoo=hello&mybar=test&mybaz=yup 所以我的问题是,在JavaScript中,如何使用这两个字符串创建包含值的对象,如下所示: { FOO : 'hello', BAR : 'test', BAZ : 'yup' } 在另一个示例中,预期的字符串可以是一个句子: He
myfoo={FOO}&mybar={BAR}&mybaz={BAZ}
然后是响应字符串:
myfoo=hello&mybar=test&mybaz=yup
所以我的问题是,在JavaScript中,如何使用这两个字符串创建包含值的对象,如下所示:
{
FOO : 'hello',
BAR : 'test',
BAZ : 'yup'
}
在另一个示例中,预期的字符串可以是一个句子:
Hello, my name is {NAME} and I am {AGE} years old.
那么实际的反应是:
Hello, my name is Fred and I am 30 years old.
应建立:
{
NAME : 'Fred',
AGE : '30'
}
对于那些对我如何解决这个问题感兴趣的人,我使用了以下代码:
var TAG_REGEX = /\{[A-Z\_]+\}/g,
expected = 'myfoo={FOO}&mybar={BAR}&mybaz={BAZ}',
response = 'myfoo=hello&mybar=test&mybaz=yup';
var lengthDifference = 0;
expected.replace(TAG_REGEX, function (tag, index) {
var afterAll = expected.substr(index + tag.length),
afterToNextTag = afterAll.indexOf('{'),
after = afterToNextTag >= 0 ? afterAll.substr(0, afterToNextTag) : afterAll.substr(0),
startSubstr = response.substr(index + lengthDifference),
endIndex = after.length ? startSubstr.indexOf(after) : startSubstr.length,
value = startSubstr.substr(0, endIndex);
lengthDifference += value.length - tag.length;
setTagValue(tag, value, responseDiv);
});
对于那些对我如何解决这个问题感兴趣的人,我使用了以下代码:
var TAG_REGEX = /\{[A-Z\_]+\}/g,
expected = 'myfoo={FOO}&mybar={BAR}&mybaz={BAZ}',
response = 'myfoo=hello&mybar=test&mybaz=yup';
var lengthDifference = 0;
expected.replace(TAG_REGEX, function (tag, index) {
var afterAll = expected.substr(index + tag.length),
afterToNextTag = afterAll.indexOf('{'),
after = afterToNextTag >= 0 ? afterAll.substr(0, afterToNextTag) : afterAll.substr(0),
startSubstr = response.substr(index + lengthDifference),
endIndex = after.length ? startSubstr.indexOf(after) : startSubstr.length,
value = startSubstr.substr(0, endIndex);
lengthDifference += value.length - tag.length;
setTagValue(tag, value, responseDiv);
});
这可能会有帮助:这可能会有帮助: