元音和辅音分组(没有正则表达式)

时间:2021-06-30 13:14:34

标签: javascript string

console.log(recompose("KiKdaola"));

所以我有这个代码,我试图从函数“recompose”中产生的结果是这个

-->[ 'K', 'i', 'Kd', 'ao', 'l', 'a' ]

如果没有正则表达式,就无法实现这种对元音和辅音进行聚类/分组,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

好吧,您可以拆分字符串,然后使用翻转标志对其进行处理:

const str = "KiKdaola";

const VOWELS = ['a', 'e', 'i', 'o', 'u'];

function isVowel(ch) {
  const lch = ch.toLowerCase();
  return VOWELS.includes(lch);
}

function recompose(str) {
  let prevIsVowel;
  return str.split('').reduce((acc, ch) => {
    const currIsVowel = isVowel(ch);
    if (prevIsVowel !== currIsVowel) {
      acc.push(''); 
    }
    prevIsVowel = currIsVowel;
    acc[acc.length - 1] += ch;
    return acc;
  }, []);
}

console.log(recompose(str));

然而,为了完整起见,这里是基于正则表达式的方式 - 使用 String.split() 和捕获组:

const str = 'abceefdfdei';

const results = str.split(/([aeiou]+)/i).filter(Boolean);

console.log(results);

相关问题