Удаление нежелательного символа в строке

У меня есть строка

String seq = "AGAGTTAAGTG+A";

Я хочу удалить все символы, кроме A, C, G и T. Так что эта строка может измениться на

String newseq ="AGAGTTAAGTGA"

Я пробовал код ниже, но это не сработало:

String result = str.replaceAll("[^!+]", "");

Я слышал, что можно использовать StringBuilder метод, но я не уверен, как бы его использовать. Кто-нибудь может посоветовать мне, как это сделать?


person 몰라나도    schedule 27.09.2020    source источник
comment
что ты уже испробовал?   -  person Turing85    schedule 27.09.2020
comment
Пользователи Stack Overflow здесь не для того, чтобы делать вашу работу за вас. Мы здесь, чтобы помочь вам решить любые проблемы, которые могут возникнуть при попытке решить проблему. Поэтому, пожалуйста, покажите нам, что вы пробовали, и расскажите, что не сработало, как ожидалось.   -  person JustAnotherDeveloper    schedule 27.09.2020
comment
Я застрял в начале, где мне нужно сделать строку, состоящую только из A, C, G, T. Я не хотел просить других делать мою работу. Я прошу прощения.   -  person 몰라나도    schedule 27.09.2020
comment
Набор допустимых символов меньше, чем набор недопустимых символов. Намного проще выполнить итерацию по строке и построить новую строку только с допустимыми символами, чем удалить недопустимые символы из исходной строки.   -  person JustAnotherDeveloper    schedule 27.09.2020
comment
должен превратить строку в char и вернуть ее как строку agian?   -  person 몰라나도    schedule 27.09.2020
comment
Некоторые люди говорят, что мы можем использовать метод StringBuilder, - я согласен. но я не уверен, как его использовать. - искали ли вы на форуме примеры, в которых используется класс StringBuilder? Это один из способов научиться. В любом случае, нужно просто перебрать каждый символ в строке. Если это A, C, G, T, вы добавляете символ в StringBuilder. Это как 3 строки кода. Один для цикла for, один для оператора if и еще один для добавления символа в StringBuilder. Затем, когда цикл завершается, вы вызываете метод toString () в StringBuilder, чтобы получить новую строку.   -  person camickr    schedule 27.09.2020
comment
Ваша проблема очень проста и имеет множество решений. 1) копируйте символы из seq в новый seq, только если это один из ATGC 2) замените все, что не является ATGC, на '' (без символа) и т. Д. Вы хотите сначала подумать об идее и решить ее, вместо того, чтобы пытаться делать то, что другие скажу тебе делать; использование StringBuilder кажется вам слишком сложным на данный момент, поэтому, возможно, используйте то, что вы знаете / понимаете, и основные манипуляции с символами / строками, а затем используйте функции со скрытым алгоритмом (StringBuilder)   -  person Soleil    schedule 27.09.2020
comment
Спасибо, понял !!   -  person 몰라나도    schedule 27.09.2020
comment
Спасибо, я понял !! - опубликуйте свое решение для других.   -  person camickr    schedule 27.09.2020


Ответы (1)


Вы можете использовать символ ^, чтобы отрицать группу:

String result = seq.replaceAll("[^ACGT]", "");
person Mureinik    schedule 27.09.2020