【发布时间】:2011-11-16 17:05:14
【问题描述】:
我正在使用谷歌翻译来翻译一个文本区域的内容并用 API 响应填充另一个文本区域。
在我的源文本区域中,我将 /n 换行符替换为 <br /> 换行符以发送如下查询:
var query = $('#textarea-src').val();
var query = encodeURIComponent(query);
var query = query.replace(/\n\r?/g, '<br />'); // replace new lines with line breaks
然后我打电话给 Google:
$.ajax({
url: apiUrl,
dataType: 'jsonp',
success: function(data) {
var response = data.data.translations[0].translatedText;
var response = response.replace(/ <br \/> ?/g, '\n'); // replace line breaks with new lines
$('#textarea-trg').val(response);
}
});
问题在于 Google 的响应在换行符周围有空格。
当我查询"hello<br />world" 时,法语的响应是"bonjour \u003cbr /\u003e monde"
使用我的replace(/ <br \/> ?/g, '\n') 正则表达式,我可以纠正这个问题,但是当我查询两个换行符时,"hello<br /><br />world" 的响应是"bonjour \u003cbr /\u003e\u003cbr /\u003e monde"
我该如何纠正这个问题?
【问题讨论】:
-
这引出了一个问题:为什么要用
<br/>s 替换换行符? -
@cheeken。我不确定,但对于有效的 XHTML,所有标签都必须关闭(或自关闭)
-
@Andrew 澄清一下,“换行符”是指
\ns。我想知道 FFish 想要用<br/>s 替换\ns。如果问题是 GET 请求和无效字符,可以通过编码解决。 -
@cheeken - 这是一个很好的观点。
$.ajax缺少data参数,因此可能在 URL 中编码错误。 -
我敢冒险,在将数据发送给 Google 之前没有理由进行替换。之后你可以这样做,避免混乱。
标签: javascript jquery regex line-breaks trim