1

予想される応答があり、どのような形式でもかまいませんが、たとえば次のようになります。

myfoo={FOO}&mybar={BAR}&mybaz={BAZ}

次に、応答文字列があります。

myfoo=hello&mybar=test&mybaz=yup

私の質問は、JavaScript で、これら 2 つの文字列を使用して値を含むオブジェクトを作成するにはどうすればよいかということです。

{
    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'
}
4

1 に答える 1

1

これをどのように解決したかに興味がある人のために、次のコードを使用しました。

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);
});
于 2012-11-28T15:54:51.467 に答える