簡體   English   中英

JavaScript 用正則表達式修剪換行符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM