Jak usunąć spacje w ciągu? Na przykład:
Wejście:
'/var/www/site/Brand new document.docx'
Wynik:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
źródło
źródło
" ahm ed ".split('').filter(e => e.trim().length).join('')
Odpowiedzi:
To?
Przykład
Aktualizacja: Na podstawie tego pytania to:
jest lepszym rozwiązaniem. Daje ten sam wynik, ale robi to szybciej.
Regex
\s
jest wyrażeniem regularnym dla „białych znaków” ig
jest flagą „globalną”, co oznacza dopasowanie WSZYSTKIE\s
(białe znaki).Świetne wyjaśnienie
+
można znaleźć tutaj .Na marginesie, możesz zamienić treść między pojedynczymi cudzysłowami na cokolwiek chcesz, więc możesz zastąpić białe znaki dowolnym innym ciągiem.
źródło
.replace(/\s+/g, '')
częściej. Czy jest jakaś różnica między tym a moją odpowiedzią?.replace(' ','')
to zadziała. Bardzo mile widziane!+
.replace('/\s+/g', '')
Ponieważ będzie on próbował znaleźć ten dosłowny ciąg. To mnie potknęło przed ...Dwa sposoby na zrobienie tego!
źródło
KRÓTKIE i NAJSZYBSZE :
str.replace(/ /g, '');
Reper:
Oto moje wyniki - (2018.07.13) MacOs High Sierra 10.13.3 na Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)):
KRÓTKIE stringi
Krótki ciąg podobny do przykładów z pytania OP
Najszybszym rozwiązaniem we wszystkich przeglądarkach jest
/ /g
(regexp1a) - Chrome 17,7 mln (operacja / s), Safari 10,1 mln, Firefox 8,8 mln. Najwolniejsze dla wszystkich przeglądarek byłosplit-join
rozwiązanie. Zmianado
\s
lub dodać+
lubi
do regexp spowalnia przetwarzanie.DŁUGIE sznurki
Dla ciągu około 3 miliony znaków to:
Możesz go uruchomić na swoim komputerze: https://jsperf.com/remove-string-spaces/1
źródło
Po odpowiedzi @rsplak: w rzeczywistości użycie podziału / łączenia jest szybsze niż użycie wyrażenia regularnego. Zobacz przypadek testu wydajności
Więc
var result = text.split(' ').join('')
działa szybciej niż
var result = text.replace(/\s+/g, '')
W przypadku małych tekstów nie ma to znaczenia, ale ważne jest w przypadkach, gdy czas jest ważny, np. W analizatorach tekstu, szczególnie podczas interakcji z użytkownikami.
Z drugiej strony
\s+
obsługuje szerszą gamę znaków spacji. Pośród\n
i\t
, dopasowuje również\u00a0
znak, i to
jest odwracane, gdy dostaje się teksttextDomNode.nodeValue
.Myślę więc, że można tu wyciągnąć następujący wniosek: jeśli wystarczy wymienić spacje
' '
, użyj split / join. Jeśli mogą istnieć różne symbole klasy symboli - użyjreplace(/\s+/g, '')
źródło
way faster
. uruchomiłem test i jest tylko 2,19% szybszy, na moim Firefox 61.Kliknij tutaj, aby zobaczyć działający przykład
źródło
Uwaga: chociaż używasz „g” lub „gi” do usuwania spacji, oba zachowują się tak samo.
Jeśli użyjemy „g” w funkcji zamiany, sprawdzi ona dokładne dopasowanie. ale jeśli użyjemy „gi”, ignoruje to rozróżnianie wielkości liter.
w celach informacyjnych kliknij tutaj .
źródło
Chociaż wyrażenie regularne może być wolniejsze, w wielu przypadkach programista manipuluje tylko kilkoma ciągami naraz, więc rozważenie szybkości nie ma znaczenia. Mimo że / / jest szybszy niż / \ s /, umieszczenie „\ s” wyjaśnia, co dzieje się z innym programistą, być może jaśniej.
Użycie Split + Join pozwala na dalszą manipulację łańcuchem w łańcuchu.
źródło