например, я использую:
string.replace(/\s+/g, " ").trim(); // here string being my string name
он заменяет все лишние пробелы одним пробелом, а также разрывы строк. Но я хочу, чтобы разрывы строк оставались такими, какие они есть, а лишние пробелы в строке заменялись одним пробелом.
См. Существует ли регулярное выражение JavaScript для удаления всех пробелов, кроме новой строки?
Если вы не сузите его еще больше, я бы воспользовался рекомендацией @Pointy (пробел и табуляция), но [ \t]{2,}, чтобы избежать избыточной замены одиночных пробелов.
Здесь вы можете использовать следующий трюк с классом отрицательных персонажей:
string = string.replace(/[^\S\n]+/g, " ").trim();
Шаблон [^\S\n]+
соответствует:
\S
, что эквивалентно \s
(тому, что у вас есть сейчас).\n
, который избавляет от замены новых строк.В вопросе говорится только о «разрывах строк»: не вернется ли эта полоса каретки из файлов с символами новой строки Windows?
@jsejcksn Окончания строк Windows — это не символы новой строки, а CRLF, т. е. \r\n
. Я интерпретировал язык ОП буквально. Если кто-то использует Windows и уверен, что \r
будет появляться только в CRLF, то простым исправлением приведенного выше ответа будет добавление \r
к классу отрицательных символов.
я не знаю, что такое строки Windows, но да, я хочу, чтобы разрывы строк (\n) в текстовом файле оставались такими, какие они есть, и обрезали только края строки и удаляли лишние пробелы между ними. Я попробовал код, который вы упомянули, но он просто оставляет файл нетронутым, ничего не меняется.
@Prabhat Вам нужно присвоить выражение замены обратно исходной строке, причем последняя будет находиться в левой части, q.v. мой обновленный ответ.
@TimBiegeleisen Да, я сделал это, но это не работает. хотя мое предыдущее выражение работало нормально, оно также удаляет разрывы строк
Подходим ближе: шаблону нужен квантификатор +
, используйте: [^\S\n]+
@TimBiegeleisen ох!! да, теперь все работает отлично. Спасибо большое человек очень помог.
Не используйте
\s
используйте свою собственную группу символов[ \t]
или что-то в этом роде (какой бы ответ ни был для вас правильным).