Javascript заменяет двойные возвраты каретки на одиночные возвраты каретки

#javascript #replaceall

#javascript #replaceall

Вопрос:

просто пытаюсь заменить двойные возвраты каретки на одиночные возвраты каретки в Javascript. Вот подробности:

Я искал в Google и Stack Overflow эту проблему, и я нашел кучу примеров замены одной строки другой, но не возврата двойной каретки с возвратом одиночной каретки (по сути, устраняя пустые строки из строки). Я полагаю, что в этом случае может быть какая-то странность.

Вот пример того, что мне нужно:

Заменить:

 Line 1
Line 2


Line 3

Line 4
 

с:

 Line 1
Line 2
Line 3
Line 4
 

Я пробовал следующие строки кода (по отдельности, а не все сразу):

 stringReplace = stringReplace.replace(/nn/g, 'n');
stringReplace = stringReplace.replaceAll(/nn/g, 'n');
stringReplace = stringReplace.split('nn').join('n');
 

Пример того, что я ввожу, это (четыре пустые строки подряд):

 Line 1
Line 2




Line 3
Line 4
 

который превращается в (все еще две пустые строки подряд):

 Line 1
Line 2


Line 3
Line 4
 

Но я попытался заменить двойной возврат каретки чем-то совершенно другим, в данном случае двойным знаком равенства:

 stringReplace = stringReplace.replace(/nn/g, '==');
 

Я ввожу:

 Line 1




Line 2




Line 3


Line 4
 

Угадайте, что? Работает по плану.

 Line 1===
Line 2====
Line 3==
Line 4
 

Есть идеи, что происходит не так, кто-нибудь? Спасибо всем!

Ответ №1:

Вы должны сопоставить две или более новых строк (не просто две, а две или более) и заменить одной новой строкой:

 const input = `Line 1
Line 2




Line 3
Line 4`;

const output = input.replace(/n{2,}/g, 'n');
console.log(output); 

Другой способ его написания: nn вместо n{2,} (оба шаблона соответствуют двум или более новым строкам)

Комментарии:

1. О, черт. Ответ был прямо передо мной, не так ли? Регулярное выражение. Большое спасибо. Спаситель! Работает как шарм!