0
votes

Comment trouver la dernière voyelle dans une chaîne JavaScript

J'ai du mal à essayer de trouver la dernière voyelle d'une chaîne en JavaScript. J'ai découvert comment trouver la première voyelle d'une chaîne et essayé de modifier ce code mais je suis coincé. J'ai essayé d'éditer les voyelles Var Code> et j'ai changé le 0 en -1 et vice versa mais rien n'a fonctionné.

Voici mon code: P>

function endVowel(x){
   var vowels = ("aeiouAEIOU");
   return vowels.indexOf(x[-1]) !== 0;
}


2 commentaires

Voulez-vous que le caractère de la dernière voyelle ou l'indice qu'il est situé?


"J'ai découvert comment trouver la première voyelle d'une chaîne" - alors inversez simplement la chaîne avant d'appliquer cela.


5 Réponses :


0
votes

Utilisez une expression régulière pour faire correspondre une voyelle, tout en utilisant des lunettes de vue négatif pour d'autres voyelles:

p>

function endVowel(x){
   const match = x.match(/[aeiou](?!.*[aeiou])/i);
   return match ? match[0] : 'No match';
}

console.log(endVowel('foobar'));


0 commentaires

-1
votes

Cela vous donnera le dernier caractère de voyelle de la chaîne (en conservant l'original supérieur / minuscule). Si vous recherchez simplement l'indice de la dernière voyelle, c'est code> indexoflasvowel code>, bien sûr!

function endVowel(x){
	var y = x.toLowerCase();
	var indexOfLastVowel = Math.max(y.lastIndexOf("a"), y.lastIndexOf("e"), y.lastIndexOf("i"), y.lastIndexOf("o"), y.lastIndexOf("u"));
	return x.charAt(indexOfLastVowel);
}

console.log(endVowel("Find the last vowel in this string..."));


0 commentaires

0
votes

function findLastVowel(string) {
 let pattern = /[aeiouAEIOU]/gim;
 let result = [...string.match(pattern)]
 return result[result.length - 1]
}

console.log(findLastVowel("your string here"))


0 commentaires

0
votes

vowels.indexof (x [-1]) code> tente de rechercher le dernier caractère dans x code> (en fait, x [x.longueur-1 ] code> ou x.slice (-1) code> est la syntaxe correcte), mais si cela ne devait pas être une voyelle, cela ne fonctionnera pas. Vous auriez besoin d'itérer à l'envers à partir de la fin pour tester d'autres caractères dans un tel scénario.

Pour obtenir le dernier index de la voyelle, vous pouvez dépouiller les non-voyelles de la droite en utilisant une regex et retourner la longueur - 1: p>

p>

const lastVowel = s => (s.match(/[aeiou]/ig) || "").slice(-1);

[
  "foobar",
  "cdgh",
  "abb",
  "beobbba"
].forEach(e => console.log(`"${e}" => "${lastVowel(e)}"`));


0 commentaires

0
votes

Une technique serait de construire votre endvowel code> ATOP Votre startvowel code>, à l'aide d'une fonction d'inversion de chaîne. C'est souvent un principe général lorsqu'on travaille avec les premières et les dernières valeurs sur quelque chose que vous pouvez facilement inverser.

Voici un exemple (et notez que le endvowel code> ne dépend de aucune manière sur la mise en œuvre du StartVowel code>, uniquement sur son comportement): p>

p>

const startVowel = (str, vowels = "aeiouAEIOU") =>
   str .split('') .find (c => vowels .includes (c))

const reverseString = (str) => str .split('') .reverse () .join('')

const endVowel = (str) => startVowel (reverseString (str))

console .log (
  startVowel ('The quick brown fox jumped over the lazy dog'), //=> 'e'
  endVowel   ('The quick brown fox jumped over the lazy dog'), //=> 'o'
)


0 commentaires