【问题标题】:Javascript replace to uppercase [duplicate]Javascript替换为大写[重复]
【发布时间】:2018-07-29 01:02:32
【问题描述】:

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

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

【问题讨论】:

  • 这是作业吗?
  • 假设是在家工作。我将给出的线索是捕获组。不过我不是为你做的。
  • @dfsq,它只需要做元音。
  • @Stuart.Sklinar 你说得对,这样更有趣
  • 尝试使用数组。

标签: javascript regex replace


【解决方案1】:

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

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

根据替换文档:

您可以指定一个函数作为第二个参数。在这种情况下, 匹配完成后将调用函数。这 函数的结果(返回值)将用作替换 细绳。 (注:上述特殊更换图案不 适用于这种情况。)请注意,该函数将被多次调用 如果正则表达式在 第一个参数是全局的。

arguments函数如下:

可能的名称:提供的值

ma​​tch :匹配的子字符串。 (对应上面的$&。)

p1, p2, ... :第 n 个带括号的子匹配字符串,提供 replace() 的第一个参数是一个 RegExp 对象。 (相当于 1 美元, $2 等。)例如,如果给出 /(\a+)(\b+)/,,则 p1 是 匹配 \a+,p2 匹配 \b+。

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

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

【讨论】:

    【解决方案2】:

    虽然效率不如上述正则表达式 .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(''));

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2017-03-04
      • 2016-10-29
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多