моей программы взять большую строку от пользователя, как aaaabaaaaabaшаблона с использованием регулярных выражений заменить цифры
, то выход должен быть заменить ааа на 0 и АКА на 1 в данной схеме
строка не должна принимать последовательность одной в другую каждую последовательность
индивидуальное и как aaaabaaabaaaaba здесь ааа-аба-AAB-ааа-аба индивидуальны и
не должны перекрывать друг друга, подбирая пожалуйста, помогите мне получить эта программа
example: aaaabaaaaaba input ended output is 0101
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Pattern1 { Scanner sc =new Scanner(System.in); public void m1() { String s; System.out.println("enter a string"); s=sc.nextLine(); assertTrue(s!=null); Pattern p = Pattern.compile(s); Matcher m =p.matcher(".(aaa"); Matcher m1 =p.matcher("aba"); while(m.find()) { s.replaceAll(s, "1"); } while(m1.find()) { s.replaceAll(s, "0"); } System.out.println(s); } private boolean assertTrue(boolean b) { return b; // TODO Auto-generated method stub } public static void main(String[] args) { Pattern1 p = new Pattern1(); p.m1(); } }
Каждая индивидуальная последовательность всегда 3 символа? – Arjan
В коде есть много неправильных вещей. 's.replaceAll' не влияет на текущую строку, поскольку строки неизменяемы. Он создает новую строку с замененным значением, которое вы можете хранить где-нибудь. Кроме того, в чем смысл использовать 'replaceAll' вообще в этом случае, если вы хотите заменить только одну вещь (так как вы делаете эту замену в цикле)? Вы должны прочитать правильное учебное пособие по регулярному выражению и взглянуть на методы «appendReplacement» и «appendTail» из класса «Matcher». – Pshemo
Также вы говорите, что «aaa» следует заменить на «0», а «aba» следует заменить на «1», но затем в тексте вы разделите строку, содержащую «aab». Это немного запутанно. – Arjan