Відповіді:
Це?
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, '');
є кращим рішенням. Це дає такий же результат, але це робить швидше.
Регекс
\s
являє собою регулярний вираз для "пробілу", і g
є "глобальним" прапором, що відповідає ВСІМ \s
(пробіли).
Чудове пояснення +
можна знайти тут .
Як бічна примітка, ви можете замінити вміст між окремими цитатами на все, що завгодно, так що ви можете замінити пробіл будь-яким іншим рядком.
.replace(/\s+/g, '')
це частіше. Чи є різниця між тим і моєю відповіддю?
.replace(' ','')
спрацює. Цінується!
+
має лише 60 голосів, якщо хтось хоче зарахувати його / її занадто stackoverflow.com/a/5964427/4258817
.replace('/\s+/g', '')
тому що він намагатиметься знайти цей буквальний рядок. Це спонукало мене раніше ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Два способи зробити це!
Найкоротші та найшвидші :str.replace(/ /g, '');
Орієнтир:
Ось мої результати - (2018.07.13) MacOs High Sierra 10.13.3 на Chrome 67.0.3396 (64-розрядні), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-розрядні)):
Короткий рядок, подібний до прикладів із запитання про ОП
Найшвидшим рішенням у всіх браузерах є / /g
(regexp1a) - Chrome 17.7M (робота / сек), Safari 10.1M, Firefox 8.8M. Найповільнішим для всіх браузерів було split-join
рішення. Змінення на
\s
або додавання +
або i
повторне копіювання уповільнює обробку.
Для рядків близько ~ 3 мільйонів результатів символів є:
Ви можете запустити його на своєму комп’ютері: https://jsperf.com/remove-string-spaces/1
Після відповіді @rsplak: насправді використання способу розділення / з'єднання швидше, ніж використання regexp. Див. Тест на ефективність роботи
Тому
var result = text.split(' ').join('')
працює швидше, ніж
var result = text.replace(/\s+/g, '')
Для невеликих текстів це не стосується, але це важливо для випадків, коли важливий час, наприклад, у аналізаторах тексту, особливо при взаємодії з користувачами.
З іншого боку, \s+
обробляє більш широкий спектр космічних символів. Серед \n
і з \t
, він також відповідає \u00a0
персонажам, і саме
це вмикається при отриманні тексту textDomNode.nodeValue
.
Тому я думаю, що тут можна зробити такий висновок: якщо вам потрібно лише замінити пробіли ' '
, використовуйте розділити / об'єднати. Якщо символів класу символів можуть бути різні - використовуйтеreplace(/\s+/g, '')
way faster
. запустив тест, і це лише на 2,19% швидше, на моєму Firefox 61.
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
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' у функції заміни, вона перевірятиме точну відповідність. але якщо ми використовуємо 'gi', він ігнорує чутливість регістру.
для довідки натисніть тут .
Regex + Замінити ()
Хоча регулярний вираз може бути повільнішим, у багатьох випадках використання розробник маніпулює лише декількома рядками одночасно, тому вважаючи, що швидкість не має значення. Незважаючи на те, що / / швидше, ніж / \ s /, наявність "\ s" пояснює, що відбувається з іншим розробником, можливо, більш чітко.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Розділити () + Приєднатися ()
Використання Split + Join дозволяє здійснювати подальші ланцюгові маніпуляції з рядком.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')