Usuń spacje wewnątrz ciągu w javascript


102

Czytałem to pytanie o trymowanie javascript, z odpowiedzią wyrażenia regularnego.

Następnie oczekuję, że przycinanie usunie wewnętrzną przestrzeń między Hello i World.

function myFunction() {
    alert("Hello World ".trim());
}

EDYTOWANE

Dlaczego się tego spodziewałem !?

Nonsens! Oczywiście przycinanie nie usuwa wewnętrznych spacji !, tylko początkowe i końcowe, tak działa przycinanie, to było bardzo złe pytanie, przepraszam.


10
przycinanie usuwa białe znaki z początku i końca łańcucha
Manse

3
Trim usuwa białe znaki z przed i po ciągu. Hello Worldjest już „przycięte”
Rocket Hazmat

@limelights To Show „HelloWorld” zamiast „Hello World”
Hernán Eche

4
@void: To nie jest „przycinanie”, to inny problem.
Rocket Hazmat

Odpowiedzi:


238

Do usuwania znaków spacji

"hello world".replace(/\s/g, "");

dla wszystkich białych znaków skorzystaj z sugestii Rocketa w komentarzach poniżej!


139
Możesz użyć, .replace(/ /g, '')jeśli jest więcej niż raz miejsca.
Rocket Hazmat

@Rocket, to absolutna prawda, po prostu nie ma jeszcze zaktualizowanej odpowiedzi! Dzięki! :)
Henrik Andersson

47
@Juhana: Jeśli chcesz, aby usunąć pozostałe spacje też wtedy zrobić: .replace(/\s/g, '').
Rocket Hazmat

12
@RocketHazmat yes! poprawna odpowiedź! choć może to być nieco bardziej wydajne: str.replace (/ \ s + / g, '')
jackocnr

3
@PitchiahNatarajan \sdopasuje spacje, tabulatory i nowe linie.
Rocket Hazmat,


1

Możesz użyć metody zamiany ciągów za pomocą wyrażenia regularnego.

"Hello World ".replace(/ /g, "");

Metoda replace () zwraca nowy ciąg z niektórymi lub wszystkimi dopasowaniami wzorca zastąpionymi przez zastąpienie. Wzorzec może być ciągiem lub wyrażeniem regularnym

RegExp

  • / / - Spacje dopasowane do wyrażeń regularnych

  • g - flaga globalna; znajdź wszystkie dopasowania zamiast zatrzymywania się po pierwszym dopasowaniu


1

Możesz użyć

"Hello World ".replace(/\s+/g, '');

trim()usuwa tylko końcowe spacje w łańcuchu (pierwsze i ostatnie w łańcuchu). W tym przypadku regExp jest szybszy, ponieważ można usunąć jedną lub więcej spacji w tym samym czasie.

Jeśli zmienisz zastępczy pusty ciąg na „$”, różnica stanie się znacznie wyraźniejsza:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Porównanie wydajności - /\s+/gjest szybsze. Zobacz tutaj: http://jsperf.com/s-vs-s


Obecnie akceptowane odpowiedź robi to samo. Proszę przedstawić kilka odpowiednich testów wskazujących, że jest to szybsze niż ta odpowiedź o cokolwiek więcej niż nanosekundy.
Heretic Monkey

@HereticMonkey Zaktualizowano!
ArlanG
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.