2017-04-04 4 views
1

Kann mir jemand sagen, warum meine Saiten nicht trimmen. Ich habe diesen Code:Script-String nicht trimmen

firstName = $('#form-create-user #first_name').val().trim().toLowerCase(); 
lastName = $('#form-create-user #last_name').val().trim().toLowerCase(); 

var initials = firstName.match(/\b\w/g) || []; 
initials = ((initials.shift() || '') + (initials.pop() || '')).toLowerCase(); 
username = initials.concat(lastName); 

$('#form-create-user #username').val(username); 

Ich mag die Benutzername von firstname und lastname erzeugt werden, Juan De la erwartet jdela zu erzeugen.

Aber der Ausgang ist zum Beispiel:

enter image description here

+1

'.replace (/ \ s + /," ")' sollte funktionieren (Regex, das alle Leerzeichen entfernt) – user3441151

+1

@deceze Warum ist diese Frage off-topic? Es gibt genug Code, um das Problem zu reproduzieren, imo ist es korrekt ... – Mistalis

+0

@Mistalis "Trim" hat eine spezielle Bedeutung, und dieser Code ist "trimmen" ganz gut. OP gab nicht an, was sie sonst erwarten würden. – deceze

Antwort

2

Von W3Schools:

Die trim() Methode Leerzeichen aus eines Strings beide Seiten entfernt.

Es entfernt keine Leerzeichen innerhalb eine Zeichenfolge.


können Sie diese Regex verwenden den Trick zu tun:

lastName = $('#form-create-user #last_name').val().replace(/\s/g, '').toLowerCase(); 

Hinweis: dieser Regex alle Leerzeichen entfernen (einschließlich Registerkarten und neue Linien).

1

Verkleidung entfernen wird nachlauf und führende Leerzeichen keine Leerzeichen dazwischen.

Verwendung

firstName = $('#form-create-user #first_name').val().trim().toLowerCase().replace(/ /g, "") 

statt