使用正则表达式的JavaScript修剪换行符?
我正在使用GoogleTranslate来翻译一个textarea的内容,并用API响应填充另一个textarea。 在我的源文本区域中,我将用使用正则表达式的JavaScript修剪换行符?,javascript,jquery,regex,line-breaks,trim,Javascript,Jquery,Regex,Line Breaks,Trim,我正在使用GoogleTranslate来翻译一个textarea的内容,并用API响应填充另一个textarea。 在我的源文本区域中,我将用换行符替换/n换行符,以如下方式发送查询: var query = $('#textarea-src').val(); var query = encodeURIComponent(query); var query = query.replace(/\n\r?/g, '<br />'); // replace new lines
换行符替换/n
换行符,以如下方式发送查询:
var query = $('#textarea-src').val();
var query = encodeURIComponent(query);
var query = query.replace(/\n\r?/g, '<br />'); // replace new lines with line breaks
var query=$('#textarea src').val();
var query=encodeURIComponent(查询);
var query=query.replace(/\n\r?/g,
);//用换行符替换新行
然后我打电话给谷歌:
$.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);
}
});
$.ajax({
url:apiUrl,
数据类型:“jsonp”,
成功:函数(数据){
var response=data.data.translations[0].translatedText;
var response=response.replace(//br\/>?/g,'\n');//用新行替换换行符
$('textareatrg').val(响应);
}
});
问题是谷歌的回应在分线处有空格。
当我询问“hello
world”
时,法语回答是“bonjour\u003cbr/\u003e monde”
使用我的replace(/
?/g,'\n')
regex,我可以纠正这一点,但是当我查询两个换行符之后的“hello
world”
时,响应是“bonjour\u003cbr/\u003e\u003cbr/\u003e monde”
如何更正此错误?请尝试:
var query = $('#textarea-src').val();
var query = query.replace(/\n|\r/g, '<br\/>'); // replace new lines with line breaks
var query=$('#textarea src').val();
var query=query.replace(/\n |\r/g',);//用换行符替换新行
或者,如果可能的话,首先发送翻译到谷歌的请求,然后用
BR
替换换行符换行符。您可以在两侧选择空格:
var response = response.replace(/ ?<br \/> ?/g, '\n');
var response=response.replace(/?
?/g,“\n”);
另一个选项是使用/*
*/g
或/\s*
\s*/g
为了清楚起见,让我们使用下划线而不是空格:如果您的文本是
“a \ubr/>\ub”
,/\ubr\/>\ug
失败,因为第一个匹配占用了第二个空格(导致“a\n
\u b”
),第二个
如果没有前导空格就无法匹配。它回避了一个问题:为什么要用
s替换换行符?@cheeken。我不确定,但对于有效的XHTML,所有标记都必须关闭(或自关闭)@Andrew为了澄清,我所说的“换行符”是指\n
s。我想知道FFish是否想用
s替换\n
s。如果问题是GET请求和无效字符,可以通过编码解决。@cheeken-这是一个很好的观点。$.ajax
缺少数据
参数,因此它可能在URL中被错误编码。我敢说,在将数据发送到Google之前,没有理由进行替换。你可以事后再做,避免混乱。这不是OP真正的问题。此外,“a\n\r\b”
(总共2行),这是一个浏览器样式的新行,将转换为“a
b”
,然后转换为“a\n\n\b”
(3行)。在其他浏览器上应该可以使用。@FFish-没问题。不过,我会注意cheeken的评论-可能有更好的解决方案来解决您的问题。在替换查询之前,我使用了encodeURIComponent(query)