#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. О, черт. Ответ был прямо передо мной, не так ли? Регулярное выражение. Большое спасибо. Спаситель! Работает как шарм!