반응형
$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);
}
}
반응형
'JAVA' 카테고리의 다른 글
JAVA - replace메소드, 정규식등에서 $, \등 일반 문자열 처리하기(quoteReplacement) (0) | 2022.04.21 |
---|---|
JAVA - Math.random() 난수 처리 취약점 : SecureRandom() (0) | 2021.10.07 |
JAVA - zip파일 내부 파일 리스트 확인하기 (0) | 2021.06.22 |
JAVA - Jsch를 활용한 SSH 연결, 명령어, 파일전송 (0) | 2021.02.02 |
JAVA - Collection(List, Map) 컬렉션 프레임워크 (0) | 2021.01.08 |