2017-07-20 17 views
10

Cześć przepraszam za proste pytanie, ale jak mogę wykryć dwa ostatnie słowa w ciągu?Jak wykryć ostatnie 2 słowa używając JavaScript?

powiedzmy mam ten var:

var sample = "Hello World my first website"; 

Jak mogę dostać dwa ostatnie słowa dynamiczne. Próbowałem split() pop, lecz tylko ostatnie słowo jest coraz

var testing = sample.split(" ").pop(); 
console.log(testing) 
+5

Dlaczego nie wystarczy użyć 'pop' dwukrotnie? – Bergi

Odpowiedz

25

Tylko spróbuj.

var testing = sample.split(" ").splice(-2); 

-2 przyjmuje dwa elementy z końca danej tablicy.

+0

następnie '.join (" ")', aby zwrócić ciąg znaków. – Vic

+0

Nie trzeba używać splice, ponieważ daje ona ponownie tablicę. Po prostu 'var t = sample.split (" "); testowanie var = t [t.length -1]; testowanie var2 = t [t.length -2]; '. –

+9

Lepiej użyj 'slice' zamiast' splice' - nie chcesz zmutować oryginalnej tablicy – Bergi

7

Należy pamiętać, że splice ponownie dają tablicę i aby uzyskać dostęp do ciągów ponownie, należy użyć indeksu, który jest taki sam jak dostęp bezpośrednio z podzielonej tablicy. Który jest po prostu

var words =sample.split(" "); 
var lastStr = words[words.length -1]; 
var lastButStr = words[words.length -2]; 

Jeśli wolisz tak robisz. jesteś prawie na miejscu. Pop() ponownie.

Metoda pop() usuwa ostatni element z tablicy i zwraca ten element. Ta metoda zmienia długość tablicy.

var sample = "Hello World my first website"; 
 
var words= sample.split(" "); 
 
var lastStr = words.pop(); // removed the last. 
 
var lastButStr= words.pop(); 
 
console.log(lastStr,lastButStr);

Uwaga, pop() usuwa element. I upewnij się, że masz wystarczająco dużo słów.

+0

Nie napisałem tego, proszę pana – VLR

+1

@VLR Bez problemu. Mam nadzieję, że spodoba ci się moja odpowiedź. Naprawdę nie dbam o downvote, jeśli nie ma komentarza. –

+0

Chociaż to odpowiada na pytanie, dobrze byłoby zobaczyć lepsze nazwy dla tych zmiennych. –

3

Albo zrobić to z regex, jeśli chcesz go jako pojedynczy ciąg

var str = "The rain in SPAIN stays mainly in the plain"; 
 
var res = str.match(/[^ ]* [^ ]*$/g); 
 
console.log(res);

+7

Język w policzek: naprawienie problemu z Regeksem oznacza, że ​​masz teraz 2 problemy: oryginalny problem i Regex, który musisz zachować i odpowiednio udokumentować. – Nzall

+0

Jak zauważyła odpowiedź marais, prawdopodobnie uniknęłoby to podziału na przestrzeń w celu pobrania słów. '(" jak, teraz, brązowa krowa? "). split ('')' => '[" jak "," teraz. "," brązowy "," krowa? "]' vs alfanumeryczne '(" jak; teraz, brązowa krowa? '). match (/ \ w +/g) '=>' ["how", "now", "brown", "cow"] '. Oczywiście ma to swoje własne problemy, takie jak znaki specjalne Unicode (np. ☃), więc będzie to musiało być dostosowane do rzeczywistego użycia ... – BurnsBA

0

próbować ten jeden

var sample = "Hello World my first website"; 
 

 
var testing = sample.split(" ").slice(-2); 
 
console.log(testing)

0

Mogłabyś również spróbować czegoś takiego:

sample.match(/\w+\W+\w+$/); 
1

var splitted = "Hello World my first website".split(" "); 
 
var testing = splitted.splice(splitted.length - 2); 
 
console.log(testing[0] + " " + testing[1]);

0

spróbować.

var testing = sample.split(" ").splice(-2).join(' '); 
0

Najpierw musimy podzielić ciąg używając podziału funkcji, a następnie za pomocą splice możemy uzyskać dwa ostatnie słowa i złączyć te dwa słowa za pomocą funkcji przyłączyć.

proszę sprawdzić

sample.split(" ").splice(-2).join(" "); 
Powiązane problemy