Подтвердить что ты не робот

Javascript - Как удалить все лишние интервалы между словами

Как удалить все лишнее пространство между словами в строковом литерале?

"some    value"

Должно стать

"some value"

Кроме того,

"    This    should  become   something          else   too . "

становится

"This should become something else too ."

Не беспокойтесь о перемещении .. Точно так же, как выше, прекрасно. Я знаю, что могу использовать $.trim(str) для достижения удаления конечного/конечного пространства. Но я не уверен, как сделать 1 пробел между трюком слов.

4b9b3361

Ответ 1

var string = "    This    should  become   something          else   too . ";
string = string.replace(/\s+/g, " ");

Этот код заменяет последовательный набор символов пробела (\s+) одним пробелом. Обратите внимание, что символ пробела также включает в себя вкладки и новые строки. Замените \s пробелом, если вы хотите заменить пробелы.

Если вы также хотите удалить пробелы в начале и конце, включите:

string = string.replace(/^\s+|\s+$/g, "");

Эта строка удаляет все символы пробела в начале (^) и заканчивается ($). g в конце RegExp означает: глобальный, т.е. Сопоставлять и заменять все вхождения.

Ответ 2

var str = "    This    should  become   something          else   too . ";
str = str.replace(/ +(?= )/g,'');

Здесь рабочая скрипка.

Ответ 3

var str = "    This    should  become   something          else   too . "
$.trim(str).replace(/\s(?=\s)/g,'')

Это использует lookahead для замены нескольких пробелов одним пространством.

Ответ 4

Пример jsFiddle

"    This    should  become   something          else   too . ".replace(/[\s\t]+/g,' ');

Ответ 5

Еще одна (возможно, более понятная) замена регулярного выражения, которая сделает трюк:

var input = /* whatever */;
input = input.replace(/ +/g, ' ');

Регулярное выражение соответствует одному или нескольким пробелам, поэтому вызов .replace() заменяет каждое одиночное или повторяющееся пространство одним пробелом.

Ответ 6

var str = 'some    value';
str.replace(/\s\s+/g, ' ');

Ответ 7

В случае, если мы хотим избежать функции замены на регулярное выражение,

Мы можем достичь того же результата,

str.split(' ').filter(s => s).join(' ')
// var str = "    This    should  become   something          else   too . ";
// result is "This should become something else too ."

Сначала разделите исходную строку пробелом, затем в массиве будет пустая строка и слова. Во-вторых, отфильтруйте, чтобы остались только слова, затем объедините все слова с пробелами.