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
11 answers
Coś takiego:
s.replace(/\s+/g, ' ');
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();
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, "")
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.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.
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.
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.
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);
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
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.
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, ' ')
.
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