.replace () больше не работает для меня

0

Я использовал эту функцию в течение некоторого времени с большим успехом, но совсем недавно она перестала работать. Я ничего не изменил; тот же браузер, сервер, одна и та же библиотека 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() преобразует строку в объект, но всегда возвращает и пустой объект. Надеюсь, это прояснит, что случилось.

  • 0
    Какие ошибки вы видите?
Показать ещё 9 комментариев
Теги:

1 ответ

0

Попробуйте удалить \n из вашего RegEx.

Так выглядит:

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;
    }
  • 0
    Ваше предложение работает, но строка, которую я конвертирую, похоже, имеет /n после каждой строки, поэтому в console.log() она показывает новую строку.
  • 0
    Я обновил ответ. Дайте мне знать, если у вас есть успех.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню