Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 元音消除困难_Javascript_String - Fatal编程技术网

Javascript 元音消除困难

Javascript 元音消除困难,javascript,string,Javascript,String,因此,我正在进行一项javascript编码挑战,我应该消除字符串中的所有元音,下面是我的代码: function removeVowel(str) { var i = 0; for (i = 0; i < str.length; i++) { if (str[i] === "a" || str[i] === "e" || str[i] === "i" || str[i] === "o" || str[i] === "u" || str[i] === "A" |

因此,我正在进行一项javascript编码挑战,我应该消除字符串中的所有元音,下面是我的代码:

function removeVowel(str) {
  var i = 0;
  for (i = 0; i < str.length; i++) {
    if (str[i] === "a" || str[i] === "e" || str[i] === "i" || str[i] === "o" ||
      str[i] === "u" || str[i] === "A" || str[i] === "E" || str[i] === "I" ||
      str[i] === "O" || str[i] === "U") {
      if (i === 0) {
        var temp = str.substr(i + 1, str.length);
        str = temp;
      } else if (i === 1) {
        var temp = str.substr(0, 1) + str.substr(i + 1, str.length);
        str = temp;
      } else if (i === str.length - 1) {
        var temp = str.substr(0, str.length - 2);
        str = temp;
      } else {
        var temp = str.substr(0, i) + str.substr(i + 1, str.length);
        str = temp;
      }
    }
  }
  return str;
}
console.log(removeVowel("Cheese!"));
函数删除元音(str){
var i=0;
对于(i=0;i
当元音与辅音在一起时,代码可以正常工作,但当字符串中有连续元音时,代码无法正常工作

上述代码的输出为“Ches!”


我遗漏了什么吗?有人能给我指点一下吗?

假设你没有像评论中所说的那样使用正则表达式,那么你的代码的问题是你要从单词中删除字母,同时增加I。这样,当你到达“Cheese”中的第一个“e”时,它会删除它并增加i,将你带到新词“Chese”的“s”位置。尝试使用while循环,或者在找到元音时记住返回一个位置。

如果您没有像评论中所说的那样使用正则表达式,那么代码的问题是您正在从单词中删除字母,同时增加i。这样,当你到达“Cheese”中的第一个“e”时,它会删除它并增加i,将你带到新词“Chese”的“s”位置。尝试使用while循环,或者在找到元音时记住返回一个位置。

您可以简单地使用regex
/[aeiou]+//gi
删除所有元音

function removeVowel(str)
{
    var vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"];
    var chars = str.split("");

    return chars.filter(function(char)
    {
        return vowels.indexOf(char) === -1;
    }).join("");

}
函数删除元音(str){
var str=str.replace(/[aeiou]+/gi,”);
返回str;
}

console.log(去掉元音(“ChEese!”)
您只需regex
/[aeiou]+/gi
即可删除所有元音

函数删除元音(str){
var str=str.replace(/[aeiou]+/gi,”);
返回str;
}
console.log(去掉元音(“ChEese!”)你的方法(固定)
方法中的问题:

var temp = str.substr(i + 1, str.length);
           ^
           |_ You're losing the first part of your String (0 -> i), so you're assigning the String (i + 1 -> length).
执行
子字符串
函数后,需要减小索引
i

函数删除元音(str){
var i=0;
对于(i=0;i你的方法(固定)
方法中的问题:

var temp = str.substr(i + 1, str.length);
           ^
           |_ You're losing the first part of your String (0 -> i), so you're assigning the String (i + 1 -> length).
执行
子字符串
函数后,需要减小索引
i

函数删除元音(str){
var i=0;
对于(i=0;iconsole.log(去掉元音(“Cheese!”)
你能用正则表达式吗?str.replace(/[aeiou]+/gi',)的可能副本。
:-)你能用正则表达式吗?str.replace(/[aeiou]+/gi',)的可能副本
:-)谢谢你回答我的问题,而不是取笑我:)谢谢你回答我的问题,而不是取笑我:)非常感谢你如此关注我的代码并如此详细地回答我的问题。我的第一个方法是将字符串转换为数组,但我没有;我不知道如何做到这一点,这就是我应用第二种方法的原因。非常感谢您如此仔细地查看我的代码并如此详细地回答我的问题。我的第一种方法是将字符串转换为数组,但我没有;我不知道如何做到这一点,这就是我应用第二种方法的原因。即使您的代码可能是OP问题的有效解决方案,也建议您描述代码片段的用途,而不仅仅是添加代码。即使您的代码可能是OP问题的有效解决方案,建议描述代码段的用途,而不是只添加代码。