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

Posted

技术标签:

【中文标题】如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为“r”,直到它变成元音?【英文标题】:How do I write a function that converts all consonant strings at the start of each word in a sentence into an "r" until it runs into a vowel? 【发布时间】:2018-07-21 00:20:26 【问题描述】:

史酷比挑战

您需要编写一个替换所有辅音的函数 单词的开头,直到它遇到带有“r”的元音。为了 例如,单词“scooby”会变成“rooby”,而“xylophone”会 变成“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;

【问题讨论】:

result.value += " " + 你的东西,在 result.value ="" 您的问题不清楚result 是什么text 是什么,是否涉及任何 html,您应该在寻求紧急解决方案之前添加一套完整的要求 【参考方案1】:

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

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

这是您要寻找的输出吗?

【讨论】:

那里有很棒的正则表达式。 而不是^| |\n,为什么不只是\b?这也将避免需要使用$1 是的,这也可以使用,但如果你只这样做,这些词就会全部粘在一起,比如“roobyroorovesrisrophonerow” 可能稍微调整一下就可以使用。 @FelipeNMoura 我已经接受了你的回答。这是一个地狱般的正则表达式。你能告诉我你是怎么做到的吗?这是如何运作的。谢谢。 当然,这个想法是(^| |\n) 组(请记住,() 之间的所有内容都已分组)将查找以下任何内容之一: - 字符串的开头 - 一个空格- 换行符 (\n) 如果有任何匹配的内容,它将“然后”在匹配组之后查找不是元音 [^aeiou] 的任何内容。加号表示可能有更多字符。之后,我用匹配组(新行或空格)和字母r 替换这些匹配项。 /ig 表示不区分大小写,可以在同一个字符串中多次匹配。【参考方案2】:

我认为在您的代码中,您在使用时会覆盖之前的值:

result.value = set[i].replace ( /^[^aeiou]+/i, "r" );

我不知道result 的类型,但你可以试试这个解决方案:

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(' ');

console.log('scooby xylophone'):

"rooby rophone"

【讨论】:

以上是关于如何编写一个函数,将句子中每个单词开头的所有辅音字符串转换为“r”,直到它变成元音?的主要内容,如果未能解决你的问题,请参考以下文章

字母“L”的发音规则?

leetcode 824. 山羊拉丁文

辅音和元音斯威夫特

儿童黑话

以元音、辅音开头的单词的读数

如何检查Java中的句子中有多少个辅音和元音?