Zastąp wiele białych spacji pojedynczymi białymi spacjami w łańcuchu JavaScript

Mam Ciągi z dodatkowymi białymi spacjami, za każdym razem, gdy jest więcej niż jedna biała spacja, chciałbym, aby była tylko jedna.

Ktokolwiek? Próbowałem wyszukiwać w google, ale nic mi nie wyszło.

Thanks

Author: d512, 2011-05-28

11 answers

Coś takiego:

s.replace(/\s+/g, ' ');
 344
Author: bjornd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-28 17:18:54

Możesz rozszerzyć Łańcuch znaków, aby zaimplementować te zachowania jako metody, jak w:

String.prototype.killWhiteSpace = function() {
    return this.replace(/\s/g, '');
};

String.prototype.reduceWhiteSpace = function() {
    return this.replace(/\s+/g, ' ');
};

To teraz umożliwia korzystanie z następujących eleganckich form do produkcji ciągów, które chcesz:

"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra        whitespaces".reduceWhiteSpace();
 61
Author: gui pn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-30 04:37:06

Użycie wyrażenia regularnego z funkcją replace rozwiązuje problem:

string.replace(/\s/g, "")
 20
Author: Roger Gajraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-30 04:09:23

Zakładam, że chcesz usunąć spacje z początku i / lub końca łańcucha (zamiast usuwać wszystkie spacje?

Jeśli tak jest, Będziesz potrzebował wyrażenia regularnego takiego jak:

mystring = mystring.replace(/(^\s+|\s+$)/g,' ');

Spowoduje usunięcie wszystkich spacji z początku lub końca łańcucha. Jeśli chcesz tylko przyciąć spacje od końca, to regex będzie wyglądał tak:

mystring = mystring.replace(/\s+$/g,' ');
Mam nadzieję, że to pomoże.
 12
Author: Spudley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-28 17:23:12

Oto rozwiązanie non-regex (just for fun):

var s = ' a   b   word word. word, wordword word   ';

// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"

// or ES6:
s = s.split(' ').filter(n => n).join(' '); 
console.log(s); // "a b word word. word, wordword word"

Rozdziela ciąg znaków przez białe spacje, usuwa je wszystkie z tablicy i ponownie łączy wszystkie słowa, z pojedynczą białą spacją pomiędzy nimi.

 11
Author: vsync,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-30 09:04:21

JQuery.trim() działa dobrze.

Http://api.jquery.com/jQuery.trim/

 8
Author: chug2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-24 03:09:42

Wiem, że nie powinienem nekromancji na temat, ale biorąc pod uwagę szczegóły pytania, Zwykle rozszerzam je na:

  • chcę zastąpić wiele wystąpień białych znaków wewnątrz łańcucha pojedynczą spacją
  • ...i... Nie chcę spacji na początku lub końcu łańcucha (trim)

W tym celu używam takiego kodu (nawiasy na pierwszym wyrażeniu regularnym są tam tylko po to, aby Kod był bardziej czytelny ... wyrażenia regularne mogą być bólem, chyba że są z nimi zaznajomieni):

s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');

Powodem tego działania jest to, że metody na obiekcie String zwracają obiekt string, na którym można wywołać inną metodę(tak jak jQuery i niektóre inne biblioteki). Znacznie bardziej kompaktowy sposób kodowania, jeśli chcesz wykonywać wiele metod na jednym obiekcie po kolei.

 7
Author: Markku Uttula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-28 13:23:02

Var x = " Test Test Test ".split(" ").Dołącz(""); alert (x);

 4
Author: Praveen Kumar Thalluri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 05:25:55

A może ten?

"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')

"my test string with crazy stuff is cool "

Ten również pozbywa się wszelkich tabulatur

 1
Author: user3413723,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-25 02:00:55

Jeśli chcesz ograniczyć użytkownika do podania spacji w nazwie, po prostu utwórz instrukcję if i podaj warunek. tak jak ja:

$j('#fragment_key').bind({
    keypress: function(e){
        var key = e.keyCode;
    var character = String.fromCharCode(key); 
    if(character.match( /[' ']/)) {
        alert("Blank space is not allowed in the Name");
        return false;
        }
    }
});
  • Utwórz funkcję JQuery .
  • to jest key press event.
  • Zainicjalizuj zmienną.
  • podaj warunek dopasowania znaku
  • Pokaż komunikat alarmowy dla dopasowanego stanu.
 0
Author: Abhijit BIswas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-08 07:11:48

Spróbuj tego.

var string = "         string             1";
string = string.trim().replace(/\s+/g, ' ');

Wynik będzie

string 1

Stało się to, że najpierw przyciąć przestrzenie zewnętrzne za pomocą trim(), a następnie przyciąć przestrzenie wewnętrzne za pomocą .replace(/\s+/g, ' ').

 -1
Author: Richard Vergis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-02 03:00:10