Mam ciągi znaków z dodatkowymi białymi spacjami, za każdym razem, gdy jest więcej niż jedna biała spacja, chciałbym, żeby była tylko jedna.
Ktoś? Próbowałem wyszukać w Google, ale nic mi nie działało.
Dzięki
javascript
string
trim
przeddzień
źródło
źródło
Odpowiedzi:
Coś takiego:
źródło
Możesz rozszerzyć String, aby zaimplementować te zachowania jako metody, jak w:
Dzięki temu możesz teraz używać następujących eleganckich formularzy do tworzenia pożądanych ciągów:
źródło
użycie wyrażenia regularnego z funkcją zamiany rozwiązuje problem:
źródło
Oto rozwiązanie niebędące wyrażeniami regularnymi (dla zabawy):
Dzieli ciąg znaków na białe spacje , usuwa je z tablicy wszystkie puste elementy tablicy (te, które były więcej niż pojedynczą spacją) i ponownie łączy wszystkie słowa w ciąg, z pojedynczą spacją między nimi.
źródło
Zakładam, że chcesz usunąć spacje od początku i / lub końca łańcucha (zamiast usuwać wszystkie spacje?
W takim przypadku będziesz potrzebować takiego wyrażenia regularnego:
Spowoduje to usunięcie wszystkich spacji z początku lub końca łańcucha. Jeśli chcesz przycinać spacje od końca, wyrażenie regularne wyglądałoby tak:
Mam nadzieję, że to pomaga.
źródło
''
zamiast' '
.jQuery.trim () działa dobrze.
http://api.jquery.com/jQuery.trim/
źródło
Wiem, że nie powinienem nekromancji na dany temat, ale biorąc pod uwagę szczegóły pytania, zwykle rozszerzam je na:
W tym celu używam takiego kodu (nawiasy na pierwszym wyrażeniu regularnym są tylko po to, aby uczynić kod nieco bardziej czytelnym ... wyrażenia regularne mogą być uciążliwe, chyba że się z nimi zaznajomisz):
Powodem tego jest to, że metody na obiekcie String zwracają obiekt string, na którym można wywołać inną metodę (podobnie jak jQuery i niektóre inne biblioteki). Znacznie bardziej kompaktowy sposób kodowania, jeśli chcesz wykonywać wiele metod na jednym obiekcie kolejno.
źródło
var x = „Test Test Test” .split („”) .join („”); alert (x);
źródło
Spróbuj tego.
wynik będzie
To, co się tutaj wydarzyło, polega na tym, że najpierw przycina przestrzenie zewnętrzne,
trim()
a następnie przycina przestrzenie wewnętrzne za pomocą.replace(/\s+/g, ' ')
.źródło
Jeśli chcesz ograniczyć użytkownika do podawania pustego miejsca w nazwie, po prostu stwórz instrukcję if i podaj warunek. Jak ja zrobiłem:
źródło
Co powiesz na ten?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
wyjścia
"my test string with crazy stuff is cool "
Ten usuwa również wszystkie zakładki
źródło
\s
. Niepotrzebnie złożone wyrażenie regularne, równie dobrze może po prostu pisać/\s+/g
.