我有一个像\uC88B\uC544\uC694
这样的字符串。
在节点repl(v7.4.0)中,此语句正确显示'좋아요', 但在下面的代码中,它不起作用。
var request = require('request');
request.post(
{
url: 'http://book.daum.net/dwr/call/plaincall/ajaxDetailController.getReviewListByPageNo.dwr',
form: {
callCount: 1,
'c0-id': 0,
'c0-scriptName': 'ajaxDetailController',
'c0-methodName': 'getReviewListByPageNo',
'scriptSessionId': '${scriptSessionId}714',
'batchId': 6,
'c0-param0': 'Object_Object:{bookid: KOR9791186757093, pageNo: 1, pageSize: 6}'
}
},
(error, response, body) => {
var str = 's2';
var regex = new RegExp(str + `.\\w*\\=[\\"\\w\\d\\s\\\\\\&\\:\\/\\.]*\\;`, 'g');
const arr= body.match(regex);
/* HERE */
console.log(arr[14].split('"')[1]);
console.log(arr[25].split('"')[1]);
console.log(arr[41].split('"')[1]);
console.log(arr[35].split('"')[1]);
console.log(arr[44].split('"')[1]);
console.log(arr[13].split('"')[1]);
}
);
为什么它没有显示正确的字符串?
答案 0 :(得分:0)
您可能需要使用JSON.parse
来转义字符串数据。
不知道你的POST响应的结构,我确信这个问题有一个更优雅的解决方案,但这是我能用你提供的信息做的最好的。希望这会有所帮助。
(error, response, body) => {
var str = 's2';
var regex = new RegExp(str + `.\\w*\\=[\\"\\w\\d\\s\\\\\\&\\:\\/\\.]*\\;`, 'g');
const arr = body.match(regex);
/* HERE */
var data = [ arr[14], arr[25], arr[41], arr[35], arr[44], arr[13] ]
.map(function (e) { return e.split('"')[1] })
data = JSON.parse('["' + data.join('","') + '"]')
console.log(data)
})