javascript - 尝试用 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")
解决方案
您有一个错误的括号,它是无效的语法:
dna.replace('T', 'A'){
但即使解决了这个问题,您当前的方法也行不通,因为它只会替换一个字符。如果您尝试通过多次调用该方法来修复它,您只需切换那个字符。
改为使用带有回调和对象的正则表达式:
const chars = {
A: 'T',
T: 'A',
C: 'G',
G: 'C',
};
const dnaStrand = (dna: string) => dna.replace(/./g, char => chars[char]);
推荐阅读
- typescript - 在 Firestore 中使用更新时是否可以保证类型安全?
- python - 数组移动绝对差异 - Python Pandas
- google-chrome - 禁用 Chrome 超时自动重新加载
- mysql - 如果同时调用该过程两次,设置会话自动提交 = 0、插入行、提交是否允许重复 ID?
- java - 使用 getText() 时,有没有办法在文本字段中将运算符与数字分开?
- google-apps-script - Google Apps 脚本中的标头未清除
- java - Mybatis批量插入性能在JDK升级时变慢
- java - Java 日期实用程序练习
- python-3.x - Selenium - 返回 xpath 中的所有文本
- apache-kafka - Kafka 连接器 - 错误处理程序中超出了容差