В первый раз, когда это меня укусило, я копировал блок условий из PDF в ответ поддержки. В PDF-файле это выглядело хорошо. В тот момент, когда он приземлился в моем редакторе, он превратился в лестницу, каждая строка щелкала в новый ряд на полпути через страницу, потому что PDF-файл обеспечил жесткий возврат в конец каждой визуальной строки. Исправление вручную означало удаление новой строки, добавление пробела и повторение того, что сорок раз. Я построил достаточно инструментов на Toolz.dev, чтобы знать, когда работа стоит автоматизировать, и этот тихо тратил свое время в течение многих лет. Поэтому я построил удалить инструмент обрывов строк, и это руководство - все, что я узнал о том, почему проблема существует и как ее правильно очистить.
TL;DR: Текст, скопированный с PDF-файлов, электронных писем и терминалов, часто имеет разрыв строки в конце каждой строки дисплея, а не только в конце каждого абзаца. Вставка оставляет ломаные рваные строки. The удалить инструмент обрывов строк удаляет эти новые строки и соединяет текст с выбранным вами разделителем, а его режим с учетом абзацев сохраняет пустые строки между абзацами, поэтому результат читается как проза, а не одна гигантская строка. Все это работает в вашем браузере, поэтому ничего не загружается.
Почему мой скопированный текст полон разрывов строк?
Короткий ответ заключается в том, что разрыв строки и разрыв абзаца - это две разные вещи, и многие программы их путают.
Когда вы вводите в текстовом процессоре или браузере, вы нажимаете Enter только в конце абзаца Текст автоматически заворачивается внутрь абзаца, поэтому визуальные линии, которые вы видите, решаются на лету шириной окна. внутри абзаца вообще нет символов разрыва строки. Это называется мягкой упаковкой, и именно поэтому тот же абзац полностью восстанавливается при изменении размера окна.
Многие другие источники делают противоположное. PDF хранит положение каждой строки, поэтому, когда вы копируете текст из нее, экстрактор часто помещает реальный символ новой строки в конце каждой строки, которую он видит на странице. Электронные письма с простым текстом исторически были завернуты в 72 или 76 столбцов с жестким возвратом на каждой строке, соглашение, которое предшествует веб-сайту и все еще отображается в списках рассылки и цитируемых ответах. Кодовые комментарии, файлы журналов и все, что напечатано на терминале фиксированной ширины, делают то же самое. Во всех этих, новая строка не отмечает конец мысли, она отмечает конец физической строки, которая оказалась такой широкой.
Когда вы вставляете это в место, которое делает мягкую упаковку, две идеи сталкиваются. Ваш редактор уже заворачивает текст, чтобы соответствовать, и теперь есть дополнительные жесткие возвраты, сокращая линии, прежде чем они достигнут края. Результатом является лестница: линии, которые ломаются в нечетных местах, отказываются перетекать и выглядят разбитыми в каждом размере окна, кроме того, с которого они были скопированы.
Что делает удаление разрывов линий?
Удаление разрывов строк означает удаление этих символов новой строки и сшивание частей обратно вместе, чтобы слова снова стали непрерывным текстом. Единственное реальное решение - что поместить в разрыв, где раньше была каждая новая строка.
Большую часть времени вы хотите одно пространство, потому что новая строка заменяет пространство между двумя словами, которое обычно было бы в предложении. Иногда вы вообще ничего не хотите, например, когда длинное число или токен кода были разделены на две строки и должны быть воссоединены без зазора. И иногда вам нужна запятая или другой разделитель, потому что строки на самом деле были списком, и вы хотите, чтобы они находились в одной строке как значения, разделенные запятыми. Инструмент дает вам все это, плюс настраиваемое поле для чего-либо еще.
Есть еще один символ, о котором стоит знать. Windows заканчивает строки двумя символами, возврат каретки, за которым следует лента строки, написанная как CRLF. Unix и современные macOS используют одну строку, LF. Очень старое программное обеспечение Mac использовало возврат одиночной каретки, CR. Если вы смешиваете текст из разных источников, вы можете получить рваную комбинацию всех трех и наивный поиск и замену, которая ищет только одну из них, оставляет позади другие. Инструмент удаления разрывов строк нормализует все три в первую очередь, поэтому не имеет значения, откуда взялся ваш текст, каждый конец строки обрабатывается одинаково.
Как удалить разрывы строк, но сохранить абзацы?
Это особенность, которая превращает инструмент из тупого в полезный, поэтому стоит разобраться.
Если вы просто удалите каждую новую строку в документе, вы получите один огромный абзац. Все предложения сливаются в одну непрерывную строку, и структура, которая сделала текст читаемым, исчезла. иногда это то, что вы хотите, но обычно это не так. Что вы хотите, так это удалить случайные разрывы строк внутри каждого абзаца, сохраняя при этом преднамеренные разрывы между абзацами.
Инструмент различает два, глядя на пустые линии. одна новая строка рассматривается как случайный разрыв внутри абзаца и удаляется. пустая строка, которая является двумя новыми строками подряд, рассматривается как реальная граница абзаца и сохраняется. Итак, документ, который был сломан вот так:
The quick brown fox
jumps over the lazy dog.
A second paragraph
follows after a blank line.
выходит как два чистых абзаца с пустой строкой между ними, а не одна длинная строка Это именно форма текста, скопированного из PDF или завернутого электронного письма, где каждый абзац внутренне сломан, но абзацы разделены пустой строкой. оставьте опцию сохранения абзаца-перерывов включенной, что является по умолчанию, и инструмент делает правильную вещь без каких-либо дальнейших возиться.
Когда вы действительно хотите, чтобы все было в одной строке, выключите эту опцию. Каждая новая строка во всем входе затем заменяется выбранным вами разделителем, который представляет собой то, как вы превращаете столбец значений в одну строку, разделенную запятыми.
Какой сепаратор выбрать?
Разделитель - это строка, которая заменяет каждый удаленный разрыв строки Правильный выбор зависит от того, что представляют строки Вот как общие параметры ведут себя на одном и том же трехстрочном вводе apple, banana, cherry,
| разделитель | Результат | Используйте его, когда |
|---|---|---|
| Космос | apple banana cherry |
Строки - это слова или фрагменты предложений, которые следует читать как прозу |
| совсем | applebananacherry |
Один жетон был разделен на линии и должен воссоединиться без перерыва |
| Запятая | apple, banana, cherry |
Строки - это список, который вы хотите использовать в качестве значений, разделенных запятыми |
| Полуколонна | apple; banana; cherry |
Вам нужен разделитель списков, который не будет конфликтовать с запятыми в данных |
| Труба | apple | banana | cherry |
Вы создаете строку таблицы Markdown или ограниченную запись |
| Пользовательский | Что бы вы ни печатали | Вам нужен конкретный столяр, например - или вкладка |
Пробел является по умолчанию, потому что он гораздо чаще, чем любой другой выбор для обычной прозы. Разделители списков вступают в свои права, когда вы меняете форму данных, а не читаете их, например, превращая скопированный столбец из электронной таблицы в одну строку, которую вы можете вставить в запрос.
Что делают варианты очистки?
Два дополнительных переключателя приводят в порядок выходные данные за пределами самого соединения, и оба включены по умолчанию, потому что они почти всегда помогают.
Обрезка удаляет пробелы в начале и конце каждой строки до соединения строк Это имеет значение, потому что скопированный текст часто несет конечные пробелы, которые вы не можете видеть, и отступ в начале строки, которую вы не хотите сохранять, как только строка больше не является собственной строкой. без обрезки эти случайные пробелы переживают соединение и появляются как неловкие пробелы в середине объединенного текста.
Пространства свертывания идут еще на один шаг и уменьшают любую прогон из двух или более пробелов или вкладок до одного пространства. После соединения строк легко получить двойные пробелы, где конечное пространство встречалось с ведущим пространством, или где исходный текст использовал пробелы для выравнивания чего-либо. Их свертывание дает вам единое расстояние, которое ожидает проза. Важно отметить, что это касается только пробелов и вкладок, а не новых строк, которые разделяют ваши абзацы, поэтому это не отменяет соединение с учетом абзацев.
Существует также опция удаления-пустых строк, выключенная по умолчанию, для случая, когда вход имеет блуждающие пустые строки вы не хотите стать пробелами в абзацах. с его включением пустые строки опускаются, а не сохраняются, что полезно для очистки экспорта с двойным интервалом.
Делать это в браузере безопасно?
Да, и это момент, который меня волнует, потому что это вся философия дизайна, лежащая в основе Toolz.dev. инструмент для обрыва строк удаления полностью работает в вашем браузере с помощью JavaScript.Вставленный вами текст обрабатывается в памяти страницы, на которую вы смотрите, и он никогда не загружается на сервер. нет ни учетной записи, ни журнала, ни сетевого запроса, несущего ваш контент где-либо.
Это имеет большее значение, чем это появляется сначала. текст люди чаще всего должны переслать текст они скопировали из где-то приватный: контракт из PDF, внутренний адрес электронной почты, сообщение клиента, блок кода.Отправка этого на удаленный сервер, чтобы его новые линии были удалены был бы абсурдной торговли конфиденциальности для такой тривиальной операции. потому что работа локальная, нет предела загрузки также, поэтому очень большой документ перетекает так быстро, как короткий, и инструмент продолжает работать даже если ваше соединение падает после загрузки страницы. если вы хотите более длинный аргумент для того, почему клиент-боковая обработка является правильным по умолчанию для утилит, как это, я написал это вверх в руководство по конфиденциальности данных и онлайн-инструментам, йо-
Чем это отличается от поиска и замены?
Вы можете, конечно, сделать это самостоятельно в любом редакторе с найти и заменить, и для разового это нормально Причина, по которой я все еще тянусь к выделенному инструменту, сводится к трем вещам, которые ручной поиск-замена получает неправильно.
Во-первых, проблема абзаца. простая замена новой строки пробелом сглаживает все в одну строку, потому что она не может сказать в абзаце разрыв от границы абзаца. чтобы сохранить абзацы вручную, вам нужно сделать двухшаговый танец: сначала заменить двойную новую строку заполнителем, затем заменить одиночные новые строки пробелами, а затем вернуть двойные новые строки. Это легко и легко ошибиться.
Во-вторых, смешанные окончания строк. если ваш текст имеет смесь CRLF, LF и CR, один шаблон поиска и замены пропускает некоторые из них, и вы остаетесь охотиться за отставшими. Инструмент нормализует всех троих впереди.
В-третьих, очистка пробелов После соединения, вы обычно хотите свернуть двойные пространства и обрезать концы, что является еще одним или двумя проходами замены, выполненными в правильном порядке, Инструмент складывает все это в одну операцию с видимыми переключателями, так что вы можете увидеть, что именно каждый делает и отрегулировать, не переделывая все это.
Ничто из этого не невозможно вручную. это просто медленно и достаточно подвержено ошибкам, чтобы специально созданный инструмент окупался во второй или третий раз, когда он вам нужен. та же логика, почему я храню целую полку небольших текстовых утилит, таких как дубликат удаления строк для определения списка и сортировщик линий для заказа одного, а не каждый раз тянуться к скрэтч-скрипту.
Когда я захочу удалить все разрывы строк?
Есть реальные случаи, когда все сворачивается в одну строку, и их стоит отметить, чтобы вы знали, когда отключить опцию абзаца.
Самый четкий - изменение формы данных. вы копируете один столбец из электронной таблицы, и он поступает как одно значение на строку. Вы хотите, чтобы он как список, разделенный запятыми, попадал в SQL IN (...) предложение или массив конфигурации. выключите keep-paragraph-breaks, выберите разделитель запятых, и у вас есть строка. то же самое относится к построению строки таблицы Markdown с разделителем труб или сборке строки запроса.
Другой - воссоединение с токеном, который был завернут Длинный URL, base64 blob или API ключ, который был разделен между строками в электронном письме, должен стать одной непрерывной строкой без разделителя. выключите разрывы абзаца, не выбирайте ничего в качестве разделителя, и фрагменты снова сливаются в один токен.
Эмпирическое правило просто Если вы чистите прозу для чтения человеком, держите абзацы включен. Если вы перекраиваете текст в одно машиночитаемое значение, выключите их. Возможность переключаться между двумя на одном входе, наблюдая за обновлением результата по ходу дела, является причиной того, что я построил оба поведения в один инструмент, а не в два. И если очищенный текст направляется куда-то, вы продолжите редактирование, более широкий набор на сайте, из конвертер дел в счетчик слов, набирает обороты там, где заканчивается этот. Для более широкого набора повседневных помощников по тексту и коду Руководство по инструментам повышения производительности разработчика это хорошая карта, и Руководство по инструментам кодирования охватывает сторону форматирования.
Часто задаваемые вопросы
Как удалить разрывы строк из текста?
Вставьте текст в инструмент удаления разрывов строк и сохраните настройки по умолчанию. Он заменяет каждый разрыв строки внутри абзаца одним пробелом и мгновенно показывает объединенный результат, который затем можно скопировать. все это происходит в вашем браузере.
Как сохранить абзацы при удалении разрывов строк?
Оставить включенным параметр keep-paragraph-breaks, который является стандартным Инструмент затем только выравнивает одиночные разрывы строки внутри каждого абзаца и сохраняет одну пустую строку между абзацами, поэтому структура текста сохраняется вместо сворачивания в одну строку.
Могу ли я объединить все линии в одну строку?
Да. Выключите опцию сохранения абзацев, и весь входной сигнал свернется в одну непрерывную линию, что удобно для превращения столбца значений в одну строку, разделенную запятыми, или для воссоединения с токеном, разделенным по строкам.
В чем разница между разрывом линии и возвратом вагона?
Разрыв строки - это символ новой строки, используемый в Unix и современных системах Mac. Возврат каретки - это более старая концовка Mac, и Windows использует обе вместе как CRLF. Инструмент нормализует все три, поэтому любой исходный текст присоединяется одинаково, независимо от того, откуда он пришел.
Как заменить разрывы строк запятой, а не пробелом?
Выберите разделитель запятых Каждый удаленный разрыв строки заменяется запятой и пробелом, который превращает список строк в список, разделенный запятыми. пользовательский параметр позволяет использовать любой нужный вам столяр, например вкладку или тире.
Почему на выходе все еще есть двойные пробелы?
Это происходит, когда линии уже заканчивались пробелами до соединения. включите опцию "Пространства коллапса", чтобы сократить любую серию пробелов или вкладок до одного пробела, и включите обрезку, чтобы сначала удалить пробелы на концах строк. Оба включены по умолчанию.
Изменяет ли удаление разрывов строк слова в моем тексте?
Нет. инструмент только удаляет символы новой строки и, если вы спросите, приводит в порядок пробелы. слова, пунктуация и их порядок оставлены точно такими, какими они были, поэтому значение текста не изменилось.
Безопасно ли вставлять сюда приватный текст?
Да. вся обработка происходит полностью в вашем браузере с помощью JavaScript. Ваш текст никогда не загружается и не сохраняется, и инструмент продолжает работать без сетевого соединения после загрузки страницы, что делает его безопасным для контрактов, электронной почты и кода.



