замена символов в строке

-4

Почему это просто не работает для меня?

<script type="text/javascript">
var gene="ATTAHATHHATTCGTA";
var i=0;
for (;i<gene.lenth;i++)
{
if(gene[i]=='H')
gene[i]='G';
}
</script>

Я меняю его с помощью замены следующим образом

<script type="text/javascript">
var gene="ATTAHATHHATTCGTA";
var i=0;
for (;i<gene.lenth;)
{
var pos=gene.replace("H","G");
i+=pos;
}
</script>

но мне все еще не повезло. Спасибо за любую помощь.

спросил(а) 2021-01-28T01:14:43+03:00 3 месяца, 1 неделя назад
1
Решение
76

Метод String.replace используется гораздо проще:

var gene="ATTAHATHHATTCGTA"; 
gene = gene.replace("H", "G", "g"); // The last "g" means "replace all occurrences"

Просто как тот.

Однако это не будет работать во всех браузерах. Чтобы сделать его переносным, вы должны указать первый параметр как регулярное выражение, например:

var gene="ATTAHATHHATTCGTA"; 
gene = gene.replace(/H/g, "G"); // The /g means "replace all occurrences"

ответил(а) 2021-01-28T01:14:43+03:00 3 месяца, 1 неделя назад
44

Обе функции имеют .length свойства опечатки в .lenth. Но помимо этого...

Причина, по которой ваша первая функция не работает, заключается в том, что не все браузеры поддерживают доступ к индексу в стиле массива для отдельных символов в строках, и даже для тех, которые работают в соответствии с MDN, они поддерживают только доступ для чтения.

Причина, по которой вторая функция не работает, заключается в том, что, когда вы передаете строку в .replace() она заменяет только первый экземпляр и помещает его в цикл, это не помогает.

Вы можете легко достичь того же, используя регулярное выражение в качестве первого параметра функции .replace(), где использование регулярного выражения позволяет вам указать дополнительные параметры, такие как глобальная замена (или вы можете заменить регистр insensitve):

gene = gene.replace(/H/g, "G");

Если по какой-то причине вы действительно хотите обработать строку самостоятельно, идя по символу, вы можете легко превратить ее в массив с .split(), а затем, когда вы закончите, верните его в строку с .join() метод:

var gene="ATTAHATHHATTCGTA",
i,
geneArray = gene.split("");

for (i=0;i<geneArray.length;i++)
{
if(geneArray[i]=='H')
geneArray[i]='G';
}
gene = geneArray.join("");

(Очевидно, вы не сделали бы этого так, когда .replace() может сделать это за вас, но это просто пример.)

ответил(а) 2021-01-28T01:14:43+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема