[英]JavaScript trim line breaks with regex?
我正在使用谷歌翻譯來翻譯一個 textarea 的內容,並用 API 響應填充另一個 textarea。 在我的源文本區域中,我將/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
然后我打電話給谷歌:
$.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);
}
});
問題是谷歌的響應在換行符周圍有空格。 當我查詢"hello<br />world"
,法語的響應是"bonjour \
monde"
使用我的replace(/ <br \\/> ?/g, '\\n')
正則表達式,我可以對此進行更正,但是當我在"hello<br /><br />world"
之后查詢兩個換行符時,響應是"bonjour \
\
monde"
我該如何糾正?
您可以將兩側的空格設為可選:
var response = response.replace(/ ?<br \/> ?/g, '\n');
另一種選擇是使用/ *<br \\/> */g
或/\\s*<br \\/>\\s*/g
。
為了清楚起見,讓我們使用下划線而不是空格:
如果你的文本是"a_<br />_<br />_b"
, /_<br \\/>_?/g
失敗,因為第一個匹配消耗了第二個空格(導致"a\\n<br />_b"
),並且第二個<br />
不能在沒有前導空格的情況下匹配。
嘗試:
var query = $('#textarea-src').val();
var query = query.replace(/\n|\r/g, '<br\/>'); // replace new lines with line breaks
或者,如果可能,首先發送翻譯到谷歌的請求,然后用BR
替換換行符|換行符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.