Инструмент удаления переносов строк
Быстро удаляйте переносы строк из текста с несколькими режимами обработки
Выберите режим обработки
Что такое удаление переносов строк?
Удаление переносов строк — это процесс обработки или удаления символов переноса строки (\n, \r\n) в тексте. Частое использование включает: объединение нескольких строк в одну, очистка лишних пустых строк, замена переносов на пробелы и т.д. Полезно для минификации кода, форматирования текста, очистки данных и других сценариев. При удалении переносов строк важно понимать, нужно ли соединять абзацы пробелами или склеивать напрямую. CSV-фрагменты, логи, скопированные статьи, prompts, куски кода и текст форм требуют разных правил. Слепое удаление переносов может склеить слова, разрушить списки, изменить смысл или сделать структурированные данные трудными для чтения. Перед отправкой важного текста стоит сравнить результат с оригиналом и решить, сохранять ли пустые строки, отступы и границы абзацев.
Как использовать
Как использовать
- Введите или вставьте текст для обработки в левое поле ввода
- Выберите режим обработки (Удалить все переносы, Переносы в пробелы и т. д.)
- Результат автоматически появится справа с предпросмотром в реальном времени
- Нажмите «Копировать», чтобы скопировать результат, или «Поменять местами», чтобы использовать результат как входные данные для дальнейшей обработки
Советы по очистке текста
- Выбирайте режим «Переносы в пробелы», когда слова должны оставаться разделёнными; удаление всех переносов может случайно склеить слова или поля.
- Для структурированных данных, таких как CSV, код или адреса, предварительно просмотрите результат перед копированием, так как переносы строк могут нести смысловую нагрузку.
Применение
Технический принцип
Каждый режим — это один вызов String.prototype.replace с глобальным регулярным выражением. Режим «Удалить все» использует /[\r\n]+/g и заменяет совпадения пустой строкой; «Переносы в пробелы» использует /[\r\n]+/g и заменяет на одиночный пробел ' '; «Объединить пустые» использует /(\r?\n){2,}/g и заменяет на '\n\n', чтобы свернуть три и более переносов в одну пустую строку; «Удалить пустые» разбивает по /\r?\n/, отфильтровывает пустые после trim элементы и склеивает обратно через '\n'. Форма символьного класса [\r\n] выбрана намеренно, поскольку три классических окончания строк — CRLF (\r\n, Windows начиная с DOS), LF (\n, Unix и современные macOS) и одиночный CR (\r, классическая Mac OS до System 9) — должны обрабатываться даже вперемешку в одном файле (частый артефакт копирования между платформами или редактирования Unix-файла в Блокноте). Существуют два дополнительных юникодных разрыва строки, но на практике они редки: U+2028 LINE SEPARATOR и U+2029 PARAGRAPH SEPARATOR, определённые алгоритмом Unicode UAX #14 и распознаваемые строковыми литералами JavaScript начиная с ES2019. Инструмент в настоящее время treats их как обычные символы, что соответствует ожиданиям большинства пользователей при вставке из мессенджера. BOM (U+FEFF) в начале UTF-8 файла также передаётся без изменений — удалите его отдельно, если парсер-получатель строгий. Обновление в реальном времени обеспечивается парой React useState/useMemo: управляемый textarea записывает ввод, мемо пересчитывает результат при каждом нажатии клавиши, а механизм согласования React перерисовывает только панель вывода. Поскольку замена по регулярному выражению на строках размером в несколько сотен КБ выполняется менее чем за миллисекунду на современном V8, debounce не требуется; для ввода размером в несколько мегабайт стоимость всё равно значительно укладывается в бюджет кадра 16 мс при 60 Гц.
- Удалить все: text.replace(/[\r\n]+/g, '') — сворачивает последовательности переносов в ничто, подходит для строковых литералов JSON и значений .env
- Переносы в пробелы: text.replace(/[\r\n]+/g, ' ') — сохраняет границы слов из перенесённых абзацев без удвоения пробелов
- Объединить пустые: text.replace(/(\r?\n){2,}/g, '\n\n') — сворачивает последовательности пустых строк до одной, сохраняя ритм абзацев
- Удалить пустые: split(/\r?\n/).filter(l => l.trim() !== '').join('\n') — сохраняет строки с содержимым и нормализует окончания в LF за один проход
- Зоопарк окончаний строк: CRLF (Windows \r\n, изначально возврат каретки + перевод строки на пишущей машинке), LF (Unix \n с 1970-х), CR (классическая Mac до System 9) — символьный класс [\r\n] ловит все три варианта; Unicode U+2028 и U+2029 из UAX #14 распознаются строковыми литералами ES2019, но редки во вводе пользователей
- BOM (U+FEFF) в начале файла оставляется без изменений — удалите его через text.replace(/^\uFEFF/, '') если следующий этап — строгий парсер JSON или CSV
- Git core.autocrlf=true нормализует CRLF↔LF при checkout — используйте этот инструмент, когда файл уже попал на вашу машину с неправильными окончаниями, а Git не исправил их
Примеры
Очистка текста, скопированного из PDF
Исходный: Thi s is
from PDF
copied
content
После: ThisisfromPDFcopiedcontentПример сжатия кода
Исходный: function hello() {
return 'world';
}
Сжатый: function hello(){return 'world';}Форматирование абзацев статьи
Удаление лишних пустых строк с сохранением межабзацных отступов для аккуратного и единообразного оформления статьиЧасто задаваемые вопросы
Какие переводы строк удаляются?
Все три варианта концов строк: LF (\n, Unix/macOS), CRLF (\r\n, Windows) и CR (\r, классический Mac). На выходе получается одна строка. Дополнительно можно убрать или нормализовать табы, повторяющиеся пробелы и другие пробельные символы.
Сохранится ли разделение на абзацы?
Включите «заменять на один пробел», и каждый перевод строки превратится в пробел. Включите «удалять полностью», и текст склеится без вставок. Для текста с пустыми строками между абзацами есть отдельный режим: сохранять разрывы абзацев (один перевод строки) и убирать только переносы внутри них — удобно при «разворачивании» скопированного из PDF.
Почему в скопированном тексте остаются видимые разрывы, которые не убираются?
Скорее всего, это мягкие переводы строк или невидимые разделители вроде U+2028 (LINE SEPARATOR) или U+0085 (NEL). Включите «удалять все пробельные разделители» (вариант, учитывающий Unicode) вместо обычного удаления переводов строк. Иногда копии из PDF содержат и пробелы нулевой ширины — тогда поможет «удалить невидимые символы».
Чем это отличается от объединения строк в коде?
Это одно и то же действие, просто визуальное. Страница делает то же, что `text.replace(/\r?\n/g, ' ').trim()` в JavaScript. Если вы пишете скрипт — делайте это в коде; если разово чистите вставленный текст — делайте здесь.
Удалит ли инструмент пробелы в конце строк и двойные пробелы?
Да, если включить «схлопывать повторяющиеся пробелы» — пригодится, когда в исходнике пробелами выравнивали столбцы. Пробелы в конце каждой строки удаляются перед склейкой строк.
Работает ли инструмент с CJK-текстом?
Да. Переводы строк вокруг китайских и японских иероглифов по умолчанию убираются без вставки западных пробелов — в восточноазиатской пунктуации между иероглифами пробелов нет. Если в тексте смешаны английский и CJK, включите «сохранять межсловные пробелы».
Загружается ли мой текст?
Нет. Замена выполняется в вашем браузере. Вставленный текст никуда не передаётся.