删除javascript字符串中的制表符空格或换行符

时间:2018-01-04 02:34:13

标签: javascript jquery json

我有一个JSON文件,我得到的json内容可能包含新行。现在我遇到了一个问题。我收到以下错误:

Unexpected token ↵ in JSON at position 9

注意:错误消息特定地表示此符号:'↵'。这是什么意思?

我的JSON:

{"T":". 
^00:00:43^2008-09-11 12:00:00.0"}

但是,如果我删除新行(不管它是新行还是标签空间,无论我面临什么问题,即使它是一个标签空间或新行。它可以正常空间工作。)。下面是修改后的JSON,它看起来不错。

修改JSON:

 {"T":".^00:00:43^2008-09-11 12:00:00.0"}

我试图关注类似的线程,如herehere以及一些类似的线程。但即使应用了这些之后也无效。欢迎任何帮助。

这是我尝试的解决方案之一:

var jsonString = JSON.stringify(data).replace(/(\r\n|\n|\r)/gm,"");

是否有检测这些换行符和制表符空格并将其删除?

3 个答案:

答案 0 :(得分:1)

你不应该打电话给JSON.stringify()。这会将字符串中的换行符转换为文字\n,后者不会被正则表达式中的转义序列匹配。只需直接替换坏数据即可。



var data = `{"T":". 
^00:00:43^2008-09-11 12:00:00.0"}`;
var jsonString = data.replace(/(\r\n|\n|\r)/g,"");
var object = JSON.parse(jsonString);
console.log(object);




答案 1 :(得分:0)

这不是有效的JSON值。 如果你参考https://www.json.org/, 换行,回车等都需要包含在价值本身中。

无法修改,因为解析器已经抛出错误。

我能想到的唯一解决方案是让JSON文件的作者像修改JSON一样修改它们的值,或者如果他们想保留该换行符,

{"T":".\n^00:00:43^2008-09-11 12:00:00.0"}

答案 2 :(得分:0)

这对我有用:

if [ -f $4 ] && [ `grep -q -P -x -v [[a-z]x{4}/[\dx{4}] $4` ]
then
echo "error"
exit 1
fi