对于我的生活,我无法弄清楚如何删除这种奇怪的格式。这是JSON.stringify(someObj)
:http://jsbin.com/ohoto5/2/edit
点击预览,您将看到格式。我需要将它作为一行,以便它可以进入JSONP响应(即jsonp12345(...)
)。如果是多行,则会触发语法错误。我已经尝试了我能想到的每一个正则表达式组合,并没有删除任何行。没有/[\r\n\s\t]/gi
甚至。唯一似乎删除它的是:/[\w\n]/gi
然而,问题是我失去了所有的话!
有任何帮助吗?请不要jQuery修复...我需要纯JavaScript。
以下是Chrome中的对象(图片):
答案 0 :(得分:3)
答案 1 :(得分:1)
很难说出需要什么,但是在浏览器识别为空白之间存在许多差异,请考虑准确设置您希望匹配的字符,例如。
// List of characters matched as white space
var whiteSpace = '\u0009\u000a\u000b\u000c\u000d\u0020\u00a0' +
'\u1680\u180e\u2000\u2001\u2002\u2003\u2004' +
'\u2005\u2006\u2007\u2008\u2009\u200a\u200b' +
'\u2028\u2029\u202f\u205f\u3000';
var re = new RegExp('[' + whiteSpace + ']+', 'g');
var x = 'lots and lots of space ';
alert(x.replace(re, ' ').replace(/ +/,' '));
答案 2 :(得分:1)
在放弃JS正则表达式后,我尝试了PHP并首先尝试:
preg_replace('/\s\s+/', ' ', $referrer['cache'])
其中缓存是我上面原始JSBin链接中的JSON。现在它返回:
callback([{"LatLng":{"Ba":45.531124,"Ca":-122.68374699999998},"InfoWindow":" <address>1125 NW 12th Ave, Portland, OR</address> <p>My first apartment</p> ","originalAddress":"1125 NW 12th Ave, Portland, OR"},{"LatLng":{"Ba":45.5138621,"Ca":-122.67767300000003},"InfoWindow":" <address>1330 SW 3rd Ave, Portland, OR</address> <p>My 2nd apartment</p> ","originalAddress":"1330 SW 3rd Ave, Portland, OR"},{"LatLng":{"Ba":45.748955,"Ca":-122.47959000000003},"InfoWindow":" <address>17501 NE 188th Ct, Brush Prairie, WA</address> <p>The first place I lived by my own</p> ","originalAddress":"17501 NE 188th Ct, Brush Prairie, WA"},{"LatLng":{"Ba":45.756944,"Ca":-122.43575800000002},"InfoWindow":" <address>18607 NE Erickson Rd, Brush Prairie, WA</address> <p>Last place I lived with my parents</p> ","originalAddress":"18607 NE Erickson Rd, Brush Prairie, WA"}])
有趣的是,JS中完全相同的正则表达式没有给出相同的结果-_-
答案 3 :(得分:0)
CRLF编码为\ r \ n,所以
str = str.replace(/(\r\n)/g, '');
应该做的。