Javascript 尝试我自己的string方法删除元音

Javascript 尝试我自己的string方法删除元音,javascript,jquery,Javascript,Jquery,我编写了这个函数来删除字符串中的小写元音。此函数不适用于某些字符串。如果字符串中有多个相同元音出现,则只删除一个元音。[编辑:很抱歉,我在下面的示例中放弃将“y”作为元音。]感谢您的帮助 var string = "heelloo world"; var vowel = ["a", "e", "i", "o", "u"]; String.prototype.character = function name() { var i; for ( i = 0; i < vowe

我编写了这个函数来删除字符串中的小写元音。此函数不适用于某些字符串。如果字符串中有多个相同元音出现,则只删除一个元音。[编辑:很抱歉,我在下面的示例中放弃将“y”作为元音。]感谢您的帮助

var string = "heelloo world";
var vowel = ["a", "e", "i", "o", "u"];

String.prototype.character = function name() {
    var i;
    for ( i = 0; i < vowel.length; i++) {
        var secondLoop = string.length;
        for ( j = 0; j < secondLoop; j++) {
            if (vowel[i] == string.charAt(j)) {
                string = string.slice(0, j).concat(string.slice(j + 1, secondLoop));
            }

        }
    }
}

string.character();
console.log(string);
//hello wrld
var string=“heelloo-world”;
变量元音=[“a”、“e”、“i”、“o”、“u”];
String.prototype.character=函数名(){
var i;
for(i=0;i<元音长度;i++){
var secondLoop=string.length;
对于(j=0;j
当您从字符串中删除一个字符时,将跳过循环中的下一个字符,因为该字符串现在短了一个字符,但指针(
j
)仍指向相同的位置。删除字符时,需要减小计数器

var string=“heelloo-world”;
变量元音=[“a”、“e”、“i”、“o”、“u”];
String.prototype.character=函数名(){
var i;
for(i=0;i<元音长度;i++){
var secondLoop=string.length;
对于(j=0;jconsole.log(字符串)在代码中,在第二个嵌套循环期间,当循环在下一次迭代中递增时,它已通过元音的第二个实例,即循环为2,但第二个元音为1。当concat's split strings触发if条件时,尝试从循环控制变量secondLoop中减去1?

我认为最好的解决方法是简单地使用正则表达式替换:

String.prototype.character=function(){
返回此。替换(/[aeiou]+/g',);//将a、e、i、o和u替换为零。
}
函数提交(){
var input=document.getElementById('input')。值;
document.getElementById('output').innerHTML=input.character();
}


我只需要使用一个好的旧正则表达式 var string=“heelloo world”; 变量元音=[“a”、“e”、“i”、“o”、“u”]

试试这个:

    var string = "heelloo world";
    var vowel = ["a", "e", "i", "o", "u"];
    var new_string = "";
    var safe = "";

    for (x = 0; x < string.length; x++)
    {
        var removeChar = false;
        for (y = 0; y < vowel.length; y++)
        {
            if (string[x] == vowel[y] && safe != vowel[y])
            {
                if (string[x+1] == vowel[y])
                {
                    safe = vowel[y];
                    removeChar = true;
                }
                else
                safe = "";

                break;
            }
        }
        if (!removeChar)
        {
            new_string += string[x];

            var isVowel = false;
            for (y = 0; y < vowel.length; y++)
            {
                if (string[x] == vowel[y])
                {
                    isVowel = true;
                    break;
                }
            }
            if (!isVowel)
            safe = "";
        }
    }
    alert(new_string);
var string=“heelloo-world”;
变量元音=[“a”、“e”、“i”、“o”、“u”];
var new_string=“”;
var-safe=“”;
对于(x=0;x

这将产生“hello world”。

此代码工作不正常。例如,若我将“heellooworld”传递给var字符串,结果是“hellowrld”。最后的输出仍然有元音。@Joetje50:阅读帖子就足以找出问题所在。“而且它对某些字符串不起作用”。哇,看起来有人试图建造一座核电站来点亮一个灯泡……当y是元音而u不是元音时呢?是的。。。。但是试着用自己的方法。。。谢谢你…谢谢你。。。工作完美。。。
    var string = "heelloo world";
    var vowel = ["a", "e", "i", "o", "u"];
    var new_string = "";
    var safe = "";

    for (x = 0; x < string.length; x++)
    {
        var removeChar = false;
        for (y = 0; y < vowel.length; y++)
        {
            if (string[x] == vowel[y] && safe != vowel[y])
            {
                if (string[x+1] == vowel[y])
                {
                    safe = vowel[y];
                    removeChar = true;
                }
                else
                safe = "";

                break;
            }
        }
        if (!removeChar)
        {
            new_string += string[x];

            var isVowel = false;
            for (y = 0; y < vowel.length; y++)
            {
                if (string[x] == vowel[y])
                {
                    isVowel = true;
                    break;
                }
            }
            if (!isVowel)
            safe = "";
        }
    }
    alert(new_string);