Javascript .replace()不再为我工作
我使用下面的函数已经有一段时间了,非常成功,但就在最近它停止了工作。我没有改变任何事情;相同的浏览器、服务器、相同的jquery库,一切都是一样的,所以我不知道出了什么问题。以下函数获取长字符串并将其转换为对象:Javascript .replace()不再为我工作,javascript,jquery,regex,Javascript,Jquery,Regex,我使用下面的函数已经有一段时间了,非常成功,但就在最近它停止了工作。我没有改变任何事情;相同的浏览器、服务器、相同的jquery库,一切都是一样的,所以我不知道出了什么问题。以下函数获取长字符串并将其转换为对象: $(function() { var _sid = getUrlVar('AICC_SID'); var _url = getUrlVar('AICC_URL'); $.get(_url,{command:"GetParam",version:
$(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()
似乎没有运行。函数将字符串转换为对象,但它总是返回空对象。希望这能解决问题。尝试从正则表达式中删除\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;
}
您看到了什么错误?最后两行与您的正则表达式不匹配,也不符合您在ObjectName上生成键/值对的要求没有引发错误,.replace()甚至没有运行。我没有投反对票,但我想这是因为你没有描述什么是真正的错误。你只是说它不起作用。问题必须:“包括尝试的解决方案,为什么它们不起作用,以及预期的结果”您的建议有效,但我正在转换的字符串似乎在每行后面都有
/n
,因此在控制台.log()
中会显示一行新行。我已更新了答案。如果您成功,请告诉我。好的,我会尝试,谢谢您的时间(顺便说一句:)只是尝试了一下,它似乎对/n
没有任何作用。