Попытка заменить определенные символы другими символами в строке в TypeScript

#javascript #typescript #if-statement

#javascript #typescript #if-оператор

Вопрос:

Я изучаю TypeScript и для этой конкретной проблемы я пытаюсь заменить определенные символы в строке другим символом. Поэтому, если есть A, я хочу заменить его на T. Если есть T, я хочу заменить его на A. Если есть C, я хочу заменить его на G. Если есть G, я хочу заменить его на C.

Выходные данные будут примерно такими:

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

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

Ниже приведен мой код. Я решил добавить оператор if / else в статический метод, включив метод include и replace для строк. К сожалению, это не работает. Ошибки, которые я получаю, похоже, связаны с синтаксисом. Как вы можете видеть ниже. Кто-нибудь может помочь?

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

введите описание изображения здесь

Комментарии:

1. Вам не нужно { после dna.replace('T', 'A'){ , вам нужно ; . Каждый if(...) и else(...) должен иметь открывающую фигурную скобку { и закрывающую фигурную скобку } (или оба могут быть опущены, если у вас есть только одна строка под ними).

2. Кроме того, .replace() не изменяется dna на месте, создается новая измененная строка. Я предполагаю, что вы также захотите вернуть результат в конце своей функции.

Ответ №1:

У вас неуместная скобка, которая является недопустимым синтаксисом:

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

Но даже исправив это, ваш текущий подход не будет работать, потому что он заменит только один символ. Если вы попытаетесь исправить это, вызвав метод несколько раз, вы просто переключите этот один символ.

Вместо этого используйте регулярное выражение с обратным вызовом и объектом:

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