首页 > 解决方案 > 尝试用 TypeScript 中的字符串中的其他字符替换某些字符

问题描述

我正在学习 TypeScript,对于这个特定的问题,我试图用另一个字符替换字符串中的某些字符。因此,如果有 A,我想用 T 替换它。如果有 T,我想用 A 替换它。如果有 C,我想用 G 替换它。如果有G,我想用 C 代替它。

输出将是这样的:

dnaStrand("ATTGC") // return "TAACG"

dnaStrand("GTAT") // return "CATA"

下面是我的代码。我决定通过合并字符串的包含和替换方法来向静态方法添加 if/else 语句。不幸的是,它不起作用。我得到的错误似乎与语法有关。正如你在下面看到的。有人可以帮忙吗?

export class Kata {
  static dnaStrand(dna: string) {
    if(dna.includes('A')){
      dna.replace('A', 'T')
    } else if (dna.includes('T')){
      dna.replace('T', 'A'){
        else if (dna.includes('C')){
          dna.replace('C', 'G')
        }else(dna.includes('G')){
          dna.replace('G', 'C')
        }
      }
    }
  }
}
Kata.dnaStrand("ATTGC")

在此处输入图像描述

标签: javascripttypescriptif-statement

解决方案


您有一个错误的括号,它是无效的语法:

dna.replace('T', 'A'){

但即使解决了这个问题,您当前的方法也行不通,因为它只会替换一个字符。如果您尝试通过多次调用该方法来修复它,您只需切换那个字符。

改为使用带有回调和对象的正则表达式:

const chars = {
  A: 'T',
  T: 'A',
  C: 'G',
  G: 'C',
};
const dnaStrand = (dna: string) => dna.replace(/./g, char => chars[char]);

推荐阅读