在Javascript

时间:2018-02-16 03:09:08

标签: javascript arrays regex switch-statement

在标有“WHAT GOES HERE?”的地方,我正在尝试使用RegExp来改变字符串中的字母,同时保持其他字符不变。

function LetterChanges(str) {
  str = str.split("");
  counter = 0;
  str.forEach(function(i) {
    switch (i) {
      case <!--WHAT GOES HERE?--!>:
        newCharCode = i.charCodeAt(0) + 1;
        i = String.fromCharCode(newCharCode);
        str[counter] = i;
        counter += 1;
        break;
      default:
        break;
    }
  });
  str = str.join("");
  return str;
}
console.log(LetterChanges('gregz1'));

我认为RegExp / [a-zA-Z] / g应该有效,但它没有。有什么建议吗?

请参阅Using Regular Expressions (RegExp) on a array in a switch statement in Javascript上Jon(@jonnawhat)的笔CodePen

1 个答案:

答案 0 :(得分:0)

您可以在下面的代码段中使用switch。但这被认为是一种不好的做法(感谢@Bergi的评论)。所以你最好使用普通的if语句。

function LetterChanges(str) {
  str = str.split("");
  counter = 0;
  str.forEach(function(i) {
    switch (true) {
      case /[a-z]/.test(i):
        newCharCode = i.charCodeAt(0) + 1;
        i = String.fromCharCode(newCharCode);
        str[counter] = i;
        counter += 1;
        break;
      default:
        break;
    }
  });
  str = str.join("");
  return str;
}
console.log(LetterChanges('gregz1'));