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
)
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];
}
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
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 :)
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;
};
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
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/>