我想使用正则表达式替换字符串中的多个字符。我正在尝试交换字母 A 和 T 以及 G 和 C。
function replacer(string) {
return "String " + string + " is " + string.replace(/A|T|G|C/g, "A","T","G","C");
}
我的正则表达式是否正确?
谢谢
我建议将第一个参数是匹配字符的replace
回调与字符 -> 替换的映射相结合,如下所示:
// Swap A-T and G-C:
function replacer(string) {
const replacements = {'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G'};
return string.replace(/A|T|G|C/g, char => replacements[char]);
}
// Example:
let string = 'ATGCCTCG';
console.log('String ' + string + ' is ' + replacer(string));
你也可以这样做:
function replacer(string) {
var newString = string.replace(/([ATGC])/g, m =>
{
switch (m) {
case 'A': return 'T';
case 'T': return 'A';
case 'G': return 'C';
case 'C': return 'G';
}
});
return "String " + string + " is " + newString;
}
console.log(replacer('GATTACAhurhur'));
A
, T
, G
, C
- 看起来你指的是DNA碱基对:)
目标是将A
与T
交换,G
与C
交换。假设输入字符串从不包含字符Z
,一个使用正则表达式的简单交换函数:
注意:使用您确信不会出现在输入字符串中的其他字符或符号更改Z
。也许$
的例子?
var input = "AAATTGGCCTAGC"
input = input.replace(/A/g,"Z").replace(/T/g,"A").replace(/Z/g,"T");
input = input.replace(/G/g,"Z").replace(/C/g,"G").replace(/Z/g,"C");
console.log(input);