Учитывая строку как:
"У собаки длинный хвост, и она КРАСНАЯ!"
Какую магию jQuery или JavaScript можно использовать, чтобы оставить только один пробел?
Цель:
"У собаки длинный хвост, и она КРАСНАЯ!"
javascript
jquery
regex
AnApprentice
источник
источник
str.replace(/ +(?= )/g,'');
вы не заменяете ничего, что вам не нужно.Ответы:
Учитывая, что вы также хотите охватить вкладки, новые строки и т. Д., Просто замените
\s\s+
на' '
:Если вы действительно хотите охватить только пробелы (и, следовательно, не табуляции, переносы и т. Д.), Сделайте так:
источник
function removeExtraSpaces(string){ return string.replace(/\s{2,}/g, ' ');}
trim()
. Это быстрее, чем регулярное выражение. Вы могли бы просто сделатьstring.trim().replace(/\s\s+/g, ' ');
илиstring.replace(/\s\s+/g, ' ').trim();
./\s\s+/g
и/\s{2,}/g
не совпадают с пробельными символами, если между ними нет по крайней мере двух, например, будет соответствовать \ t \ t, но не будет совпадать с одним \ t.string.replace(/\s+/g, ' ')
будет соответствовать всем одиночным и множественным подстрокам пробельных символов и заменяться одним пробелом.Поскольку вы, кажется, заинтересованы в производительности, я описал их с помощью firebug. Вот результаты, которые я получил:
Это на Firefox, на котором выполняется 100 000 замен строк.
Я рекомендую вам сделать свои собственные тесты профилирования с Firebug, если вы считаете, что производительность является проблемой. Люди, как известно, плохо предсказывают, где находятся узкие места в их программах.
(Также обратите внимание, что в панель инструментов разработчика IE 8 также встроен профилировщик - возможно, стоит проверить, какова производительность в IE.)
источник
( / +(?= )/g, ' ');
терпит неудачу в IE9, он оставляет двойные пробелы:"Foo Bar Baz".replace(/ +(?= )/g, ' ');
->"Foo Bar Baz"
РЕДАКТИРОВАТЬ: Если вы хотите заменить все виды пробельных символов, наиболее эффективный способ будет следующим:
источник
Это одно решение, хотя оно будет нацелено на все пробелы:
Редактировать : это, вероятно, лучше, так как это предназначается для пробела, сопровождаемого 1 или больше пробелов:
Альтернативный метод:
Я не использовал
/\s+/
сам по себе, поскольку он заменяет пробелы, которые занимают 1 символ, несколько раз и может быть менее эффективным, поскольку он нацелен больше, чем необходимо.Я не проверял глубоко ни один из них, так что, если есть ошибки.
Кроме того, если вы собираетесь выполнять замену строк, не забудьте переназначить переменную / свойство для его собственной замены, например:
Используя jQuery.prototype.text:
источник
У меня есть этот метод, я называю его методом Derp из-за отсутствия лучшего имени.
Запуск его в JSPerf дает удивительные результаты.
источник
Более надежный метод: Это заботится также удаление начальных и конечных пробелов, если они существуют. Например:
В вашем примере не было этих пробелов, но они также являются очень распространенным сценарием, и принятый ответ заключался только в том, чтобы обрезать их в отдельные пробелы, например: «... КРАСНЫЙ!», А это не то, что вам обычно нужно.
источник
Более надежный:
источник
Я предлагаю
для всего пространства
ИЛИ
для преобразования нескольких возвратов в одно возвращение также.
источник
Я знаю, что опаздываю на вечеринку, но нашел хорошее решение.
Вот:
источник
Вот альтернативное решение, если вы не хотите использовать replace (заменяйте пробелы в строке без использования replace javascript)
источник
Комплексный незашифрованный ответ для новичков и соавт.
Это для всех чайников, как я, которые тестируют сценарии, написанные некоторыми из вас, ребята, которые не работают.
Следующие 3 примера - это шаги, которые я предпринял для удаления специальных символов И лишних пробелов на следующих 3 веб-сайтах (все из которых работают отлично) {1. EtaVisa.com 2. EtaStatus.com 3. Tikun.com} так что я знаю, что они работают отлично.
Мы связали их вместе более чем с 50 за один раз и никаких проблем.
// Это удалило специальные символы + 0-9 и позволяет использовать только буквы (верхний и нижний регистр)
// Это удаляет специальные символы и позволяет использовать только буквы (верхний и нижний регистр) и 0-9 пробелы AND
// Это удаляет специальные символы и позволяет использовать только буквы (верхний и нижний регистр) и пробелы 0-9 и AND. // Место (/ \ s \ s + / g, "") в конце удаляет лишние пробелы // когда я использовал одинарные кавычки, это не сработало.
:: NEXT :: Сохранить # 3 как
a .js
// Я назвал мой NoDoubles.js:: ДАЛЕЕ :: Включите свой JS на свою страницу
Включите это в поле формы: например,
Чтобы это выглядело так
Это удалит специальные символы, оставит одинарные пробелы и удалит лишние пробелы.
источник
Также есть возможность:
источник
Или, если вы также хотите заменить вкладки:
источник
Jquery имеет функцию trim (), которая в основном превращает что-то вроде этого «FOo Bar» в «FOo Bar».
Это гораздо полезнее, потому что он автоматически удаляет пустые места в начале и в конце строки. Нет необходимости в регулярных выражениях.
источник
is replace не используется, string = string.split (/ \ W + /);
источник
источник
Мы можем использовать следующее регулярное выражение, объясненное с помощью системной команды sed. Подобное регулярное выражение может использоваться на других языках и платформах.
Добавьте текст в какой-нибудь файл скажем test
Мы можем использовать следующее регулярное выражение для замены всех пробелов одним пробелом
Надеюсь, что это служит цели
источник
Попробуйте заменить несколько пробелов одним пробелом.
Читать далее @ Замена нескольких пробелов одним пробелом
источник
результат:
источник
Для большего контроля вы можете использовать обратный вызов замены для обработки значения.
источник
Этот скрипт удаляет любые пробелы (несколько пробелов, табуляции, возвратов и т. Д.) Между словами и пробелами:
источник
'touch указатель мыши' .replace (/ ^ \ s + | \ s + $ | (\ s) + / g, "$ 1") должно сработать!
источник
Я знаю, что мы должны использовать регулярные выражения, но во время интервью меня попросили сделать БЕЗ ИСПОЛЬЗОВАНИЯ REGEX.
@slightlytyler помог мне перейти на следующий подход.
источник