Wyrażenie regularne

0

Cześć mam taka malutka funkcje:

public static void wypisz (String x){
		Pattern p = Pattern.compile("[a-e]");
		Matcher m = p.matcher(x);
		char[] ch = x.toCharArray();
		
		for(int i = 1; i<ch.length;i=i+2){
			System.out.println(" Parzyste: "+ch[i]);
			if(m.find()){
				System.out.println(" Find a: " + m.group());
			}
		}
		
	}

Funkcja ma zwracać litery z przedziału <a,e> i tak robi, lecz ma je zwracać z pozycji parzystych czyli jak wpisze abcd to output: bd (i tu nie wiem jak to zrobić myślałem że sam warunek w pętli wystarczy).

0

Do Matchera m przekazałeś na początku x i to z tym xem wywołujesz go w pętli. W żaden sposób tam nie mówisz, że chcesz to wywołać na aktualnym (parzystym) znaku. Możesz przed wywołanie find wywołać p.matcher z aktualnym znakiem albo rozwiązać to w jakiś bardziej cywilizowany sposób.

0
public static void wypisz(String x) {
		Pattern p = Pattern.compile("[a-e]");

		for (int i = 1; i < x.length(); i = i + 2) {
			System.out.println(" Parzyste: " + x.substring(i, i + 1));
			Matcher m = p.matcher(x.substring(i, i + 1));
			if (m.find()) {
				System.out.println(" Find a: " + m.group());
			}
		}
	}

1 użytkowników online, w tym zalogowanych: 0, gości: 1