반응형

$user_id 형태로 되어있는부분을 찾아서 해당하는 특정값 'admin' 형태로 치환하는 특정 로직을 구성했는데

replace가 replaceAll처럼 뒷부분까지 동작하는 현상을 발견하였습니다. 😥

 

replace 정규식으로 동작

public class App {
	public static void main(String args[]) {
	    String res = "$user_address, $user_address_detail";
	    res = res.replace("$user_address", "서울특별시 구로구");
	    System.out.println(res);
	}	
}

이유는 $로 인한 정규식으로 동작하였고, 첫번째 찾은 문자열만 변경하고 싶었던 저는 다음으로 찾은 메소드는 replaceFirst를 사용하여 처리하였지만, 다음과 같은 현상을 발견하였습니다.

 

replaceFirst 문제소스

public class App {
	public static void main(String args[]) {
		String res = "my name is $name";
		res = res.replaceFirst("$name", "psw");
		System.out.println(res);
	}	
}

치환이 안됨...

replace메소드에서 치환이 잘되던 replaceFirst가 $ 달러 특수기호를 붙이자 동작이 안되었습니다.🤷‍♂️

해결방법으로 JAVA에서 []로 묶어주게되면 해당부분을 강제로 문자열로 인식하게 할 수 있어 해당방법을 통해 해결하였습니다.

 

변경소스

public class App {
	public static void main(String args[]) {
		String res = "my name is $name";
		res = res.replaceFirst("[$]name", "psw");
		System.out.println(res);
	}	
}

치환이 정상적으로 된다.

 

반응형