Я думаю, что ваш вопрос - выдержка из более крупной программы.
import java.util.Scanner;
public class ScratchJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad text: ");
String input = sc.nextLine();
String intermediate = input.replaceAll("([bcdfghjklmnpqrstvwxz])", "$1o$1");
System.out.println(intermediate.replaceAll("([BCDFGHJKLMNPQRSTVWXZ])", "$1X$1"));
}
}
Вы можете заменить в два прохода один для нижнего регистра другого для верхнего регистра.
Я не смог найти метод в стандартной библиотеке, который заменил бы за один проход в зависимости от условия совпадения, хотя это было бы намного быстрее для большого ввода. Если вы столкнулись с проблемами с производительностью, подумайте над тем, чтобы написать один.