Javascript替换为大写

时间:2018-02-18 18:38:53

标签: javascript replace

如何用较少的代码替换大写的所有元音?



var str = "aaeeiioouu";
str=str.replace(/a/g, "A");
str=str.replace(/e/g, "E");
str=str.replace(/i/g, "I");
str=str.replace(/o/g, "O");
str=str.replace(/u/g, "U");
document.write(str);




2 个答案:

答案 0 :(得分:6)

replace接受function作为第二个参数,您可以使用它并返回大写结果。您也可以修改正则表达式以接受所有元音。您可以使用/[aeiou]/g

var str = "aaeeiioouu";
str=str.replace(/[aeiou]/g, (c) => {
   return c.toUpperCase();
});
console.log(str);

根据替换文档:

  

您可以将函数指定为第二个参数。在这种情况下,   在执行匹配后将调用函数。该   函数的结果(返回值)将用作替换   串。 (注意:上述特殊替换模式没有   适用于这种情况。)请注意,该函数将被多次调用   如果正则表达式中的每个完整匹配将被替换的时间   第一个参数是全局的。

     

该函数的arguments如下:

     

可能的名称:提供的值

     

匹配:匹配的子字符串。 (对应于$& above。)

     

p1,p2,... :第n个带括号的子匹配字符串,前提是   replace()的第一个参数是一个RegExp对象。 (对应1美元,   上面是2美元等。)例如,如果给出了/(\ a +)(\ b +)/,则p1是   匹配\ a +,而p2代表\ b +。

     

偏移:整个匹配子字符串的偏移量   被检查的字符串。 (例如,如果整个字符串是'abcd',   并且匹配的子字符串是'bc',那么这个参数将是1.)

     

string :正在检查整个字符串。

答案 1 :(得分:0)

虽然效率不如上面的正则表达式.replace()解决方案,但这里有一个替代方法,可以遍历每个字母并将元音大写。



var str = "aaeeiioouuxyz";
    str = str.split('');
for (var i = 0; i < str.length; i++)
  if ("aeiou".indexOf(str[i]) > -1) str[i] = str[i].toUpperCase();

console.log(str.join(''));
&#13;
&#13;
&#13;