JavaScript обрезает разрыв строки с помощью регулярного выражения? - PullRequest
3 голосов
/ 14 сентября 2011

Я использую Google Translate, чтобы перевести содержимое текстовой области и заполнить другую текстовую область ответом 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"

Как я могу исправить это?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Вы можете сделать пробелы необязательными с обеих сторон:

var response = response.replace(/ ?<br \/> ?/g, '\n');

Другой вариант использует / *<br \/> */g или /\s*<br \/>\s*/g.

Для ясности, давайте использовать подчеркивания вместо пробелов:
Если ваш текст "a_<br />_<br />_b", /_<br \/>_?/g завершится неудачно, поскольку первое совпадение занимает второе место (в результате "a\n<br />_b"), а второе <br /> не может быть сопоставлено без начального пробела.

2 голосов
/ 14 сентября 2011

Попробуйте:

var query   = $('#textarea-src').val();
var query   = query.replace(/\n|\r/g, '<br\/>'); // replace new lines with line breaks

Или, если возможно, сначала отправить запрос на перевод в Google, а затем заменить символы новой строки | переводами строки на BR

...