Ho delle stringhe con spazi bianchi extra, ogni volta che c'è più di un solo spazio bianco mi piacerebbe che fosse solo uno.
Chiunque? Ho provato a cercare su Google, ma niente ha funzionato per me.
Grazie
Ho delle stringhe con spazi bianchi extra, ogni volta che c'è più di un solo spazio bianco mi piacerebbe che fosse solo uno.
Chiunque? Ho provato a cercare su Google, ma niente ha funzionato per me.
Grazie
Risposte:
Qualcosa come questo:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Puoi aumentare String per implementare questi comportamenti come metodi, come in:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Ciò ora consente di utilizzare le seguenti forme eleganti per produrre le stringhe desiderate:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
usare un'espressione regolare con la funzione di sostituzione fa il trucco:
string.replace(/\s/g, "")
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"
Divide la stringa per spazi bianchi , rimuove tutti gli elementi dell'array vuoti dall'array (quelli che erano più di un singolo spazio) e unisce nuovamente tutte le parole in una stringa, con un singolo spazio bianco tra di loro.
Presumo che tu stia cercando di eliminare gli spazi dall'inizio e / o alla fine della stringa (piuttosto che rimuovere tutti gli spazi?
In tal caso, avrai bisogno di una regex come questa:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Ciò rimuoverà tutti gli spazi dall'inizio o dalla fine della stringa. Se vuoi solo tagliare gli spazi dalla fine, allora la regex sarebbe simile a questa:
mystring = mystring.replace(/\s+$/g,' ');
Spero che aiuti.
''
invece di ' '
.
jQuery.trim () funziona bene.
So che non dovrei negromanzia su un argomento, ma dati i dettagli della domanda, di solito lo espanderò per significare:
Per questo, uso un codice come questo (le parentesi sul primo regexp sono lì solo per rendere il codice un po 'più leggibile ... regexps può essere un dolore a meno che tu non ne abbia familiarità):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Il motivo per cui funziona è che i metodi su String-object restituiscono un oggetto stringa su cui è possibile invocare un altro metodo (proprio come jQuery e alcune altre librerie). Modo molto più compatto per codificare se si desidera eseguire più metodi su un singolo oggetto in successione.
var x = "Test Test Test" .split ("") .join (""); alert (x);
Prova questo.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
il risultato sarà
string 1
Quello che è successo qui è che taglierà prima gli spazi esterni usando trim()
poi taglierà gli spazi interni usando .replace(/\s+/g, ' ')
.
Se si desidera limitare l'utente a dare spazio nel nome, basta creare un'istruzione if e fornire la condizione. come ho fatto:
$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;
}
}
});
Che ne dici di questo?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
uscite "my test string with crazy stuff is cool "
Questo si sbarazza anche di tutte le schede
\s
. Regex inutilmente complesso, potrebbe anche solo scrivere /\s+/g
.