Есть ли способ избежать удаления разрывов строк при удалении лишних пробелов из текстового файла?

например, я использую:

string.replace(/\s+/g, " ").trim();  // here string being my string name

он заменяет все лишние пробелы одним пробелом, а также разрывы строк. Но я хочу, чтобы разрывы строк оставались такими, какие они есть, а лишние пробелы в строке заменялись одним пробелом.

Не используйте \s используйте свою собственную группу символов [ \t] или что-то в этом роде (какой бы ответ ни был для вас правильным).

Pointy 16.08.2024 19:05

Если вы не сузите его еще больше, я бы воспользовался рекомендацией @Pointy (пробел и табуляция), но [ \t]{2,}, чтобы избежать избыточной замены одиночных пробелов.

bobble bubble 16.08.2024 20:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь вы можете использовать следующий трюк с классом отрицательных персонажей:

string = string.replace(/[^\S\n]+/g, " ").trim();

Шаблон [^\S\n]+ соответствует:

  • Не \S, что эквивалентно \s (тому, что у вас есть сейчас).
  • Но также и не \n, который избавляет от замены новых строк.

В вопросе говорится только о «разрывах строк»: не вернется ли эта полоса каретки из файлов с символами новой строки Windows?

jsejcksn 16.08.2024 19:10

@jsejcksn Окончания строк Windows — это не символы новой строки, а CRLF, т. е. \r\n. Я интерпретировал язык ОП буквально. Если кто-то использует Windows и уверен, что \r будет появляться только в CRLF, то простым исправлением приведенного выше ответа будет добавление \r к классу отрицательных символов.

Tim Biegeleisen 16.08.2024 19:12
^ @TimBiegeleisen Да, просто замечаю, что вопрос недостаточно конкретизирован в отношении того, что представляет собой «перенос строки» (будь то просто перевод строки или также CRLF и т. д.)
jsejcksn 16.08.2024 19:15

я не знаю, что такое строки Windows, но да, я хочу, чтобы разрывы строк (\n) в текстовом файле оставались такими, какие они есть, и обрезали только края строки и удаляли лишние пробелы между ними. Я попробовал код, который вы упомянули, но он просто оставляет файл нетронутым, ничего не меняется.

Prabhat 17.08.2024 06:11

@Prabhat Вам нужно присвоить выражение замены обратно исходной строке, причем последняя будет находиться в левой части, q.v. мой обновленный ответ.

Tim Biegeleisen 17.08.2024 06:16

@TimBiegeleisen Да, я сделал это, но это не работает. хотя мое предыдущее выражение работало нормально, оно также удаляет разрывы строк

Prabhat 17.08.2024 09:14

Подходим ближе: шаблону нужен квантификатор +, используйте: [^\S\n]+

Tim Biegeleisen 17.08.2024 11:08

@TimBiegeleisen ох!! да, теперь все работает отлично. Спасибо большое человек очень помог.

Prabhat 17.08.2024 12:15

Другие вопросы по теме