找出最长的元音子串

Mil*_*vić 2 html javascript regex arrays

我输入了用户键入字符串的位置,我需要在该字符串中找到最长的元音链并将其呈现出来。我自己尝试过,但我不知道该怎么做。这是我的代码:

vowelHandler = () => {
    let input = document.getElementById('input2'); 
    const hasVowel = /[aeiouAEIOU]/g;
    let letters = []; 
    let vowels = ''; 
    let count = 0;
    let res = 0;
    letters = input.value.match(/[aeiouAEIOU]/g); 
    if(hasVowel.test(letters)) { 
      for(let i = 0; i <= letters.length; i++) {
        if(hasVowel.test(letters[i])) {
          count++;
          res = Math.max(res, count);
        }else {
          res = Math.max(res, count);
          count = 0;
        }
      }
      letters = letters.join(' ');
      vowels = letters.substring(letters[res]);
      document.getElementById('num2').innerHTML= vowels;
    }else {
      document.getElementById('num2').innerHTML= 'String does not contain vowels.';
    }
  }
Run Code Online (Sandbox Code Playgroud)
<input type='text' id='input2'/>
<button onClick={this.vowelHandler}>CLICK</button>
<p id='num2'></p>
Run Code Online (Sandbox Code Playgroud)

Tho*_*lle 5

您可以用空格替换字符串中不是元音的所有内容,用空格分割字符串,然后检查这些子字符串中哪个最长。

function getLongestVowelSubstring(s) {
  const separateVowels = s.replace(/[^aeiou]/ig, ' ').split(' ');

  const longest = separateVowels.reduce((longest, vowelGroup) => {
    return vowelGroup.length > longest.length ? vowelGroup : longest;
  }, '');

  return longest;
}

console.log(getLongestVowelSubstring('get the looongest vowel substring'));
Run Code Online (Sandbox Code Playgroud)