Editly

Автор: kodewright · Опубліковано: 2026-05-08 · Оновлено: 2026-11-04

Як прибрати зайві пробіли з тексту онлайн (швидкий фікс)

Встав текст і прибери подвійні пробіли, нерозривні пробіли та зайві розриви рядків з PDF за секунди. Безкоштовно, у браузері, без завантаження файлів.

Таблиця: «Зайві пробіли» зводить до одного лише звичайний пробіл U+0020 і не чіпає U+00A0, U+200B та U+2003

Встав текст у Виправити пробіли, познач «Прибрати зайві пробіли» і скопіюй результат. Кожна серія звичайних пробілів стане одним пробілом, а краї тексту будуть обрізані. Нерозривні пробіли, табуляції та символи нульової ширини ця опція не чіпає, і саме тут ховається причина більшості скарг «я прибрав пробіли, а частина лишилась».

Я зробив інструмент так, щоб очищення відбувалося у вкладці твого браузера. Нічого не вивантажується: з того боку просто немає сервера, який міг би зберегти копію.

Що робить кожна опція

Опцій сім. Вони комбінуються, а попередній перегляд показує зміни ще до копіювання. Опис нижче я звіряв із кодом інструмента, бо кілька опцій поводяться не так, як натякають їхні назви.

ОпціяЩо робитьПриклад (· — пробіл, ↵ — розрив рядка)
Прибрати зайві пробілиЗводить кожну серію звичайних пробілів до одного й обрізає початок і кінець усього текстуword··word → word·word
Виправити розриви PDFПеретворює поодинокі розриви рядків усередині абзацу на пробіли, а порожні рядки між абзацами лишаєquick·brown↵fox → quick·brown·fox
Прибрати всі розриви рядківЗамінює кожен розрив рядка пробіломline·1↵line·2 → line·1·line·2
Прибрати порожні рядкиВидаляє кожен порожній рядок, тож абзаци опиняються в сусідніх рядкахpara↵↵↵para → para↵para
Обрізати кінці рядківПрибирає пробіли наприкінці кожного рядка; початкові лишаютьсяhello··↵ → hello↵
Видалити спецсимволиВидаляє кожен не-ASCII символrésumé → rsum
Випрямити лапкиКучеряві лапки стають прямими“hi” → "hi"

Дві речі варто знати, перш ніж ставити позначки. «Виправити розриви PDF» не лагодить переноси: infor-↵mation стане infor- mation. А «Видалити спецсимволи» разом з усім іншим прибирає й літери з діакритикою, тож не застосовуй його до німецького, французького чи українського тексту.

Звідки в тексті зайві пробіли

PDF зберігає літери як координати, а не як слова. Коли ти копіюєш звідти, рідер вгадує початок слів за проміжками між гліфами, а вирівняні по ширині або розріджені рядки можуть штовхнути здогад у бік двох пробілів. Друге типове джерело — копіювання з відрендереної вебсторінки: у HTML подекуди стоїть  , і до буфера обміну воно потрапляє як U+00A0. У Word теж є комбінація для нерозривного пробілу (Ctrl+Shift+Space), і я допускаю, що деякі шаблони її використовують.

На екрані жоден із них не відрізняється від звичайного пробілу. Через це вони проявляються лише згодом: у кількості слів, у пошуку чи в регулярці, що не збігається.

Символи, схожі на пробіли

СимволКодПрибрати зайві пробілиЧи ловить \s у JavaScript
Звичайний пробілU+0020Зводить до одногоТак
Нерозривний пробілU+00A0Не чіпаєТак
Тонкий пробілU+2009Не чіпаєТак
Em-пробілU+2003Не чіпаєТак
Пробіл нульової шириниU+200BНе чіпаєНі

Остання колонка здивувала мене, коли я це запустив. У багатьох матеріалах стверджують, що \s пропускає нерозривний пробіл, але в сучасному JavaScript він збігається. Крізь усі патерни з \s проскакує якраз пробіл нульової ширини.

Що ламають нерозривні пробіли та пробіли нульової ширини

Я прогнав рядок "New\u00A0York" через Intl.Segmenter у Node 22 і отримав два слова, так само як зі звичайним пробілом. Лічильник слів на цьому сайті використовує той самий API, тож випадковий нерозривний пробіл його підрахунку не змінює. Інакше з кодом, що ділить за буквальним пробілом: "New\u00A0York".split(' ') повертає один елемент.

Пробіли нульової ширини підступніші. Ширини в них немає, тож редактори нічого не показують, але регулярка на кшталт /\s+/ не вважає їх пробільними символами, а порівняння рядків бачить два різні рядки.

У моїй роботі безладні пробіли здебільшого приходять із логів, CSV-файлів і користувацького вводу в застосунках, а не з документів Word. Одного разу я також наступив на баг, спричинений нерозривним пробілом у коді чи даних. Такі самі невидимі символи трапляються й під час вставки з PDF, про що я згадував у статті скільки слів на сторінці.

Виправлення через регулярки в «Пошуку і заміні»

Опції «Виправити пробіли» не перетворюють нерозривні пробіли й пробіли нульової ширини, тож для них я перемикаюся на Пошук і заміна з увімкненим Regex. Інструмент дозволяє налаштувати лише регістр і глобальний збіг, тому патернам нижче прапорці не потрібні. Запускай їх у такому порядку:

  1. Знайди [\u00A0\u2000-\u200A], заміни на один пробіл. Це нерозривний пробіл і весь блок U+2000–U+200A (en-пробіл, em-пробіл, тонкий пробіл тощо).
  2. Знайди \u200B, поле заміни лиши порожнім. Пробіли нульової ширини зникнуть.
  3. Знайди [ \t]+, заміни на один пробіл. Це зводить серії пробілів і табуляцій, не чіпаючи розривів рядків.
  4. Знайди (?<=[^\n])\n(?=[^\n]), заміни на пробіл. Так склеюються розриви посеред абзацу з PDF, а порожні рядки між абзацами лишаються.

Для кроку 3 не бери \s+: воно ловить і переноси рядків, тож абзаци злипнуться в один блок. Повний синтаксис патернів, групи захоплення та квантифікатори розібрано в гайді з пошуку й заміни регулярками.

Порядок важливий. Якщо спочатку звести пробіли, нерозривний пробіл поруч зі звичайним уціліє, а крок 1 знову залишить тобі подвійний пробіл.

Коли не можна прибирати пробіли

На прозі очищення безпечне, а на всьому, де відступ щось означає, руйнівне. «Прибрати зайві пробіли» зводить до одного й початкові пробіли, тож відступ із чотирьох пробілів стане одним.

У Python відступи і є структурою блоків, тож ти отримаєш або IndentationError, або, що гірше, інструкції, які тихо вилетять зі свого циклу. У YAML ключі вкладаються початковими пробілами, тому чистка може перепідпорядкувати ключ і лишити валідний файл, який означає вже щось інше. У Markdown чотири початкові пробіли роблять блок коду, а два кінцеві — жорсткий розрив рядка, тож «Обрізати кінці рядків» непомітно перекомпонує абзаци. У TSV роздільниками стовпців є табуляції, а у файлі патча формат — це початковий пробіл, + і -.

У таких файлах роби потрібну одну зміну точною регуляркою, а решту не чіпай.

Швидка діагностика перед очищенням

  1. Пошукай два пробіли поспіль. Збіги означають подвійні пробіли.
  2. Увімкни Regex у «Пошуку і заміні» й знайди \u00A0. Збіги означають нерозривні пробіли.
  3. Знайди \u200B, щоб виявити пробіли нульової ширини.
  4. Пошукай рядки, що обриваються посеред речення. Це проблема розривів із PDF.

Потім познач лише потрібні опції. Панель попереднього перегляду покаже результат до копіювання.

Коли текст уже чистий

Очищення зазвичай іде першим кроком більшої роботи. Коли кінцеві пробіли зникли, apple· і apple стають рівними, тож роби це до того, як сортувати рядки за алфавітом, де порядок можуть змінити ще й регістр та локаль.

Невидимі символи також часто дають хибні відмінності в diff: два рядки виглядають однаково, а показані як змінені, бо один закінчується нерозривним пробілом або CRLF. Спершу очисти обидві версії, а тоді порівняй два текстові файли онлайн.

Часті запитання

Чому у вставленому тексті з'являються зайві пробіли?

Джерел кілька. PDF зберігає літери як координати, а не як слова, тож засіб вилучення тексту вгадує межі слів за проміжками й іноді ставить два пробіли замість одного. Вебсторінки використовують сутності &nbsp;, які потрапляють у буфер обміну як нерозривні пробіли (U+00A0). Деякі текстові редактори теж можуть вставляти нерозривні пробіли. На екрані жоден із них не відрізняється від звичайного пробілу, але пізніше вони вилізають неправильною кількістю слів, невдалим пошуком або регуляркою, що не спрацьовує.

Що таке нерозривний пробіл і чому його не видно?

Нерозривний пробіл (U+00A0) не дозволяє рядку розірватися в цьому місці, тож «New York» лишається в одному рядку. Малюється він так само, як звичайний пробіл (U+0020), тому на око їх не відрізнити. Опція «Прибрати зайві пробіли» його не чіпає. Щоб перетворити його на звичайний, відкрий «Пошук і заміна», увімкни Regex, знайди \u00A0 і заміни на один пробіл. «Видалити спецсимволи» теж його прибирає, але просто видаляє, тож слова з обох боків зливаються.

What regex pattern removes multiple spaces in a row?

Використай /[ \t]+/g і заміни на один пробіл. Патерн ловить серії пробілів і табуляцій, а розриви рядків не чіпає. Щоб за один прохід зачепити ще й нерозривні пробіли, візьми /[ \t\u00A0]+/g. Прапорець u для \u00A0 не потрібен, він знадобиться лише для \p{...}. Для цього завдання не бери /\s+/g: \s ловить і переноси рядків, тож абзаци злипнуться в один блок.

Why does the Remove Spaces tool have a separate 'Fix PDF line breaks' option?

Зайві пробіли та поламані рядки — це дві різні проблеми. Після копіювання з PDF наприкінці кожного візуального рядка часто лишається жорсткий розрив, тож одне речення розтягується на кілька рядків. «Виправити розриви PDF» замінює кожен поодинокий розрив рядка пробілом і зберігає порожні рядки між абзацами. Слова, перенесені через дефіс наприкінці рядка, воно не склеює: «infor-» і «mation» лишаються двома шматками. Для цього скористайся «Пошуком і заміною», щоб прибрати дефіс разом із розривом рядка, і запусти це перед опцією для PDF.

Does removing extra spaces change my word count?

Звичайні подвійні пробіли кількість слів не змінюють, бо слова рахуються за послідовностями літер, а не за проміжками. Нерозривний пробіл теж не змінює підрахунок у токенізаторі на кшталт Intl.Segmenter: він рахує «New York» як два слова з будь-яким пробілом. Інструменти, що ділять текст за буквальним пробілом, можуть порахувати це як одне. Кількість може зменшити опція «Видалити спецсимволи»: вона видаляє нерозривні й інші не-ASCII пробіли, тож «New York» стає «NewYork», тобто одним словом.

Can I remove spaces from a very large document without the page freezing?

Очищення — це кілька регулярних виразів у твоєму браузері, тож пост у блозі, лист чи звіт проблем не створять. На файлах у багато мегабайтів я це не заміряв. Для такого розміру, наприклад великого логу, надійніший консольний інструмент на кшталт sed.

What is the difference between 'Trim line endings' and 'Remove extra spaces'?

«Обрізати кінці рядків» прибирає пробіли наприкінці кожного рядка, а початкові лишає. «Прибрати зайві пробіли» зводить кожну серію пробілів до одного, включно з відступами, і обрізає лише початок і кінець усього тексту. Візьмемо рядок ' hello world ': обрізання дає ' hello world', а прибирання зайвих пробілів — 'hello world'. Якщо увімкнути обидві, спершу зникають кінцеві пробіли, а потім згортається решта.

Спробуйте наш безкоштовний лічильник слів

Миттєво рахуйте слова, перевіряйте читабельність та аналізуйте текст.

Відкрити лічильник слів