Попытка заменить что-либо внутри строки, содержащей круглые скобки, java

#java

Вопрос:

Привет, я новичок в java, и у меня есть вопрос,

Я пытаюсь заменить строку » 22(S)» на » 22(I)», но по какой-то причине первая замена не заменяет строку.

Вот мой код:

 public class tes {

public static void main(String[] args) {

    int y = 22;
    String x = " 22(S)";
    
    x = x.replaceFirst(" "   y   "(S)", " "   y   "(I)");                   

    System.out.println(x);

}
 

}

Хотя я знаю, что могу сделать x.replaceFirst(«S»,»I»), я хочу понять, почему это все еще создает 22(Ы) с моим текущим кодом. Спасибо.

Ответ №1:

Потому ( что и ) группируют операторы в регулярном выражении. Вам нужно избежать их в течение срока матча. Нравится,

 x = x.replaceFirst(" "   y   "\(S\)", " "   y   "(I)");
 

И я получаю

  22(I)
 

без каких-либо других изменений.

Ответ №2:

 public class Replace {
    public static void main(String[] args) {
    
        int y = 22;
        String x = " 22(S)";
        x = x.replaceAll(" "   y   "\(S\)", " "   y   "(I)");
        System.out.println(x);
    }
}
 

Используя replaceAll также, мы можем заменить все буквы S на I