Как удалить пробелы в строке? Например:
Вход: '/var/www/site/Brand new document.docx'
Выход: '/var/www/site/Brandnewdocument.docx'
Спасибо
Это?
str = str.replace(/\s/g, '');
Пример
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Обновление: На основе этого вопроса:
str = str.replace(/\s+/g, '');
- лучшее решение. Он производит тот же результат, но делает это быстрее.
Regex
\s
- это регулярное выражение для "пробелов", а g
- это "глобальный" флаг, что означает соответствие всем \s
(пробелам).
Отличное объяснение +
можно найти here.
В качестве дополнительной заметки вы можете заменить контент между одинарными кавычками на все, что хотите, чтобы вы могли заменить пробелы любой другой строкой.
var a = "/var/www/site/Brand new document.docx";
alert(a.split(' ').join(''));
alert(a.replace( /\s/g, ""));
Два способа сделать это!
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
Вы можете попробовать:
input.split(' ').join('');
После ответа @rsplak: на самом деле использование split/join намного быстрее, чем при использовании regexp. См. Производительность тестовый пример
So
var result = text.split(' ').join('')
работает быстрее, чем
var result = text.replace(/\s+/g, '')
В небольших текстах это не имеет значения, но для случаев, когда важно время, например. в текстовых анализаторах, особенно при взаимодействии с пользователями. Это важно.
С другой стороны, \s+
обрабатывает более широкий спектр символов пространства. Среди \n
и \t
он также соответствует символу \u00a0
, и это то, что
включается, при получении текста с помощью textDomNode.nodeValue
.
Итак, я думаю, что заключение здесь можно сделать следующим образом: если вам нужно только заменить пробелы ' '
, используйте split/join. Если могут быть разные символы класса символов - используйте replace(/\s+/g, '')
way faster
. Я запустил тест, и он только на 2,19% быстрее, на моем Firefox 61.
var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
Примечание. Хотя вы используете "g" или "gi" для удаления пробелов, они ведут себя одинаково.
Если мы используем 'g' в функции replace, он будет проверять точное соответствие. но если мы используем "gi", он игнорирует чувствительность к регистру.
для справки нажмите здесь.
Я предпочитаю использовать Lodash для удаления пробелов из строки:
var input = '/var/www/site/Brand new document.docx',
result = _.trim(input);
Если вы хотите удалить пробелы с обоих концов строки (но не внутри строки), используйте trim() methodode, например
" a b c ".trim() // = "a b c"
Примечание:
Вы также можете прочитать о trimLeft и trimRight, которые удаляют пробелы только с левой/правой стороны соответственно, но обратите внимание, что эти два являются нестандартными и не соответствуют стандартным трекам.
.replace(/\s+/g, '')
чаще. Есть ли разница между этим и моим ответом?