Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为一个;r";直到它变成一个元音?_Javascript_User Defined Functions - Fatal编程技术网

Javascript 如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为一个;r";直到它变成一个元音?

Javascript 如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为一个;r";直到它变成一个元音?,javascript,user-defined-functions,Javascript,User Defined Functions,史酷比挑战赛 您需要编写一个函数来替换所有辅音 一个单词的开头,直到它遇到带有“r”的元音为止。对于 例如,单词“史酷比”将变为“鲁比”,而“木琴”将变为“木琴” 变成“rophone” 这是我正在使用的函数,但它只对我句子中的一个单词起作用。我怎样才能让它对每一个词都起作用 function scooby_doo () { if (text.value.length == 0) { result.value = "no input given!"; } else

史酷比挑战赛

您需要编写一个函数来替换所有辅音 一个单词的开头,直到它遇到带有“r”的元音为止。对于 例如,单词“史酷比”将变为“鲁比”,而“木琴”将变为“木琴” 变成“rophone

这是我正在使用的函数,但它只对我句子中的一个单词起作用。我怎样才能让它对每一个词都起作用

function scooby_doo () {
    if (text.value.length == 0) {
        result.value = "no input given!";
    } else if (text.value.length > 0) {
        var set = text.value.split(" ");
        for (i = 0; i < set.length; i++) {
            result.value = set[i].replace (/^[^aeiou]+/i, "r");
        }
     } else {
        result.value = "";
    }
    return;
}
函数scooby_doo(){
如果(text.value.length==0){
result.value=“未提供任何输入!”;
}else if(text.value.length>0){
var set=text.value.split(“”);
对于(i=0;i
我认为在您的代码中,当您使用以下命令时,您会覆盖以前的值:

result.value = set[i].replace ( /^[^aeiou]+/i, "r" );
我不知道
结果的类型,但您可以尝试以下解决方案:

function scooby_doo (text) {

var result = [];
if ( text.length == 0 )
{
    return 'no input given';
} else if ( text.length > 0 ) {
    var set = text.split ( " " );
    for ( i = 0; i < set.length; i++ ) {
        result.push(set[i].replace ( /^[^aeiou]+/i, "r" ));
    }
 } else {
    return '';
}

 return result.join(' ');
}

我认为,在您的代码中,当您使用以下命令时,您会覆盖前面的值:

result.value = set[i].replace ( /^[^aeiou]+/i, "r" );
我不知道
结果的类型,但您可以尝试以下解决方案:

function scooby_doo (text) {

var result = [];
if ( text.length == 0 )
{
    return 'no input given';
} else if ( text.length > 0 ) {
    var set = text.split ( " " );
    for ( i = 0; i < set.length; i++ ) {
        result.push(set[i].replace ( /^[^aeiou]+/i, "r" ));
    }
 } else {
    return '';
}

 return result.join(' ');
}

我相信您可以在没有显式循环的情况下实现这一点:

str = 'scooby doo loves his xylophone show';
str.replace(/(^| |\n)[^aeiou]+/ig, '$1r');
// outputs "rooby roo roves ris rophone row"

这就是您想要的输出吗?

我相信您可以在没有显式循环的情况下实现这一点:

str = 'scooby doo loves his xylophone show';
str.replace(/(^| |\n)[^aeiou]+/ig, '$1r');
// outputs "rooby roo roves ris rophone row"

这就是你想要的输出吗?

result.value+=”+你的东西,在result.value=“”之后,你的问题不清楚什么是
result
什么是
text
是否涉及任何HTML在你请求紧急解决方案之前,你应该添加一整套要求。result.value+=”+你的东西,在result.value=”“之后,您的问题不清楚什么是
结果
什么是
文本
是否涉及任何HTML。在请求紧急解决方案之前,您应该添加一套完整的要求mazing regex。与其
^ | | \n
,为什么不干脆
\b
?这也可以避免使用
$1
。是的,也可以使用,但如果你只这样做,单词就会粘在一起,比如“Roobyroorovesrophonerow”可能需要稍加调整才能使用。@FelipeNMoura我接受你的答案。这是一个非常好的正则表达式。你能告诉我你是怎么做到的吗。这是如何工作的。谢谢。当然,我们的想法是组
(^ | | | \n)
(记住,
()
之间的所有内容都是分组的)将查找以下内容之一:-字符串的开头-一个空格-一个新行符号(
\n
)如果任何内容与之匹配,它将“然后”查找任何不是元音的内容
[^aeiou]
就在匹配组之后。加号表示可能有更多字符。然后,我用匹配组(新行或空格)和字母
r
替换这些匹配。
/ig
表示它不区分大小写,可以在同一个字符串中多次匹配。这里的正则表达式很棒。与其使用
^ | | \n
,为什么不使用
\b
?这也可以避免使用
$1
。是的,也可以使用,但如果你只这样做,单词就会粘在一起,比如“Roobyroorovesrophonerow”可能需要稍加调整才能使用。@FelipeNMoura我接受你的答案。这是一个非常好的正则表达式。你能告诉我你是怎么做到的吗。这是如何工作的。谢谢。当然,我们的想法是组
(^ | | | \n)
(记住,
()
之间的所有内容都是分组的)将查找以下内容之一:-字符串的开头-一个空格-一个新行符号(
\n
)如果任何内容与之匹配,它将“然后”查找任何不是元音的内容
[^aeiou]
就在匹配组之后。加号表示可能有更多字符。然后,我用匹配组(新行或空格)和字母
r
替换这些匹配。
/ig
表示它不区分大小写,可以在同一字符串中多次匹配。