2017-02-12 2 views
1

Ich habe (zum Beispiel) Zeichenfolge wie let abc = 'Jonny_Name', also wenn ich überprüfen mag, dieser Name ist oder nicht, dass ich überprüfen:Split-String und dann alle Artikel ohne die letzten

let isName = abc.split('_')[1]; 
isName === 'Name' ? `your name is ${abc.split('_')[0]}` : 'not name'; 

Aber ich habe diese Situation , wenn ich String wie let cba = 'Jonny_Great_Dude_Name'
in diesem Fall, dass ich auf diese Weise für Namen überprüfen:

let isName = cba.split('_').pop(-1); 
isName === 'Name' ? `your name is ${cba.splitOnLast('_')[0]}` : 'not name' 

Dies funktioniert gut, aber ich keine Informationen über splitOnLast Methode gefunden wurde. Hat diese Methode Probleme mit kompatiblen Browsern? Kann ich dafür eine Alternative machen? Ich möchte alle Elemente ohne letzte nehmen.

UPD. in der Konsole funktioniert es gut, aber im Projekt habe ich Fehlermeldung wie item.splitOnLast is not a functionenter image description here

UPD. wie in in ersten Beispiel Jonny_Name wurde ist 'Jonny', in Jonny_Great_Dude_Name erwarten Jonny_Great_Dude

+0

Es gibt keine solche Funktion wie '.splitOnLast' in' Array.prototype'. –

+0

Sie haben Recht, ich finde diese Methode in Devtools Hinweise .. – YoroDiallo

Antwort

1

const abc = 'Jonny_Great_Dude_Name'; 
 
const splitted = abc.split(/_/); 
 
const [other, name] = [splitted.pop(), splitted.join('_')]; 
 
console.log({name:name, isName: other == 'Name'});

+0

es funktioniert! Danke für deine Hilfe – YoroDiallo

2

Array.pop() sein hat kein Argument - Sie diese verwenden können, das letzte Element bilden die Split-Betrieb

let isName = cba.split('_').pop(); 

Oder Sie kehren die neuen bekommen Array ein, um die „erste“ Element:

let isName = cba.split('_').reverse()[0] 

String.split() nimmt ein zweites Argument für die maximale Länge des zurückgegebenen Arrays. Dies soll Ihnen helfen:

cba.split('_', cba.split('_').length - 1) 

oder als String zu erhalten

cba.split('_', cba.split('_').length - 1).join("_") 

Lauf Beispiel

const cba = 'Jonny_Great_Dude_Name'; 
 
const isName = cba.split('_').pop() 
 
const rest = cba.split('_', cba.split('_').length - 1).join("_") 
 
console.log({isName, rest})

+0

Thx für Ihren Kommentar! isName funktioniert gut, ich habe ein Problem in '' Ihr Name ist $ {cba.splitOnLast ('_') [0]} '' wo ich die ganze Zeichenfolge nehmen muss, ohne zuletzt geteilt :( – YoroDiallo

+0

Ich habe diese Frage auch schon gesehen bearbeite meinen Beitrag –

+0

leider 'cba.split ('_', cba.split ('_') - 1)' hat ein leeres Array zurückgegeben .. – YoroDiallo

Verwandte Themen