.replace()不再为我工作

时间:2013-11-08 15:58:52

标签: javascript jquery regex

我已经使用以下功能一段时间取得了巨大的成功,但就在最近它停止了工作。我什么都没改变;相同的浏览器,服务器,相同的jquery库,一切都是一样的,所以我迷失了什么是错的。以下函数采用长字符串并将其转换为对象:

$(function()
{   
    var _sid    = getUrlVar('AICC_SID');
    var _url    = getUrlVar('AICC_URL');
    $.get(_url,{command:"GetParam",version:"2.2",session_id:_sid},function(response)
    {
        var _obj = toJSON(response);
        console.log(_obj);
    });
});

function toJSON(str) 
{
    var obj = {};
    str.replace(/([^=]+)=(.*)\n/g, function (_, name, value)
    {
        console.log('name : ' + name);
        console.log('value : ' + value);
        obj[name] = $.trim(value);
    });
    return obj;
}

这是获得转换的字符串:

ERROR=0
ERROR_TEXT=Successful
VERSION=2.2
AICC_DATA=[CORE]
STUDENT_ID=0425655
STUDENT_NAME=Doe, John B
SCORE=
TIME=00:00:00
CREDIT=C
LESSON_LOCATION=1_5
LESSON_STATUS=NULL
[Core_Lesson]
[Objectives_Status]

问题是.replace()似乎没有运行。 toJSON()函数将字符串转换为对象,但它始终返回并清空对象。希望能够解决问题所在。

1 个答案:

答案 0 :(得分:0)

尝试从您的RegEx中删除\n

所以它看起来像这样:

str.replace(/([^=]+)=(.*)/g, ...

我猜这是与换行相关的问题。

<强>更新

尝试使用以下内容更新toJSON()

function toJSON(str) {
        var obj = {};
        str.replace(/([^=]+)=(.*)/g, function (_, name, value) {
            name = name.replace(/\n/g, '');

            console.log('name : ' + name);
            console.log('value : ' + value);
            obj[name] = $.trim(value);
        });
        return obj;
    }