web-dev-qa-db-fra.com

Javascript: Retour du dernier mot d'une chaîne

droit à cela:

J'ai une chaîne words qui contient deux mots et j'ai besoin de renvoyer le dernier mot. Ils sont séparés par un "". Comment puis-je faire cela?

function test(words) {

var n = words.indexOf(" ");
var res = words.substring(n+1,-1);
return res;

}

On m'a dit d'utiliser indexOf et substring mais ce n'est pas obligatoire. Quelqu'un a un moyen facile de faire cela? (avec ou sans indexOf et substring)

22
Andrew P

Essaye ça:

vous pouvez utiliser des mots d'une longueur de n mots.

exemple:

  words = "Hello World";
  words = "One Hello World";
  words = "Two Hello World";
  words = "Three Hello World";

Tous retourneront la même valeur: "World"

function test(words) {
    var n = words.split(" ");
    return n[n.length - 1];

}
40
Jyoti Prakash
var data = "Welcome to Stack Overflow";
console.log(data.split(" ").splice(-1));

Sortie

[ 'Overflow' ]

Cela fonctionne même s'il n'y a pas d'espace dans la chaîne d'origine, vous pouvez donc obtenir immédiatement l'élément comme ceci

var data = "WelcometoStackOverflow";
console.log(data.split(" ").splice(-1)[0]);

Sortie

WelcometoStackOverflow
25
thefourtheye

Vous pouvez aussi:

words.split(" ").pop();

Juste enchaîner le résultat (tableau) de la fonction split et faire apparaître le dernier élément ferait l'affaire en une seule ligne :)

14
user5505115

En ajoutant à partir de la réponse acceptée, si la chaîne d'entrée est "Hello World " (notez l'espace supplémentaire à la fin), il retournera ''. Le code ci-dessous doit prévoir si l'utilisateur _" ":

var lastWord= function(str) {
  if (str.trim() === ""){
    return 0;
  } else {   
    var splitStr = str.split(' ');
    splitStr = splitStr.filter(lengthFilter);
    return splitStr[splitStr.length - 1];
  }
};

var lengthFilter = function(str){
    return str.length >= 1;
};
1
Iggy

Pour compléter Jyoti Prakash, vous pouvez ajouter plusieurs séparateurs (\s | ,) afin de fractionner votre chaîne (via this post )

Exemple: 

function lastWord(words) {
  var n = words.split(/[\s,]+/) ;
  return n[n.length - 1];
}

Remarque: regex \s signifie caractères d'espacement : Un caractère d'espacement, Un caractère de tabulation, Un caractère de retour chariot, Un caractère de nouvelle ligne, Un caractère de tabulation vertical, Un caractère de formulaire

fragment

var wordsA = "Hello  Worlda"; // tab
var wordsB = "One Hello\nWorldb";
var wordsC = "Two,Hello,Worldc";
var wordsD = "Three Hello Worldd";

function lastWord(words) {
  var n = words.split(/[\s,]+/);
  return n[n.length - 1];
}


$('#A').html( lastWord(wordsA) );
$('#B').html( lastWord(wordsB) );
$('#C').html( lastWord(wordsC) );
$('#D').html( lastWord(wordsD) );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
A:<span id="A"></span><br/>
B:<span id="B"></span><br/>
C:<span id="C"></span><br/>
D:<span id="D"></span><br/>

0
boly38