Javascript 如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为一个;r";直到它变成一个元音?
史酷比挑战赛 您需要编写一个函数来替换所有辅音 一个单词的开头,直到它遇到带有“r”的元音为止。对于 例如,单词“史酷比”将变为“鲁比”,而“木琴”将变为“木琴” 变成“rophone” 这是我正在使用的函数,但它只对我句子中的一个单词起作用。我怎样才能让它对每一个词都起作用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
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
表示它不区分大小写,可以在同一字符串中多次匹配。