본 포스팅 내용은 제가 이해한 방식으로 구현 및 작성하였습니다.
더 좋은 방식이 있다면 피드백 주시면 정말 감사하겠습니다!🙏🏻
<시행착오😅>
데이터베이스에 /r/n로 표현되어있는 엔터를 <br>로 바꿔 표현하던 중 문제가 생겼다..
컨트롤러에 작성한 java코드는 아래와 같다.
1. replaceAll("\\r\\n", "<br>") 사용 -> 오류
survey.setSurveyIntro(survey.getSurveyIntro().replaceAll("\\r\\n", "<br>"));
replaceAll을 사용하여 다시 setter로 넣어줬는데도 바뀌지 않는 것이다.
replaceAll함수 사용이나 set과 get사용에 문제가 있나?
2. replaceAll("수고", "소이") 사용 -> 정상작동
survey.setSurveyIntro(survey.getSurveyIntro().replaceAll("수고", "소이"));
테스트로 '수고'를 '소이'로 바꿔보았더니 아주 잘만 작동한다!ㅋㅋㅋㅋ
그렇다면 개행문자를 변환하는 것이 문제가 있는 것으로 판단!
비슷해 보이는 replace함수를 사용해보았다.
3.replace("\\r\\n", "<br>") 사용 -> 정상작동
survey.setSurveyIntro(survey.getSurveyIntro().replace("\\r\\n", "<br>"));
정상작동!!!!
그렇다면 개행문자를 치환 할 때
replace는 내가 입력한 문자열 그대로를 치환해주고 replaceAll은 그렇지 않다는 것을 어렴풋이 알게되었다.
이제 실제로 어떤 차이가 있는지 정확히 알아보자.
<replace와 replaceAll의 차이😎>
- java.lang.String 패키지의 replace 메소드, replaceAll 메소드
https://docs.oracle.com/javase/8/docs/api/
공통점은 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수이다.
첫번째 매개변수는 변환하고자 하는 대상이 될 문자열, 두번째 매개변수는 변환할 문자 값 이다.
반면 차이점은 매개변수의 형태를 보면 CharSequence와 String 가 다르다는 차이점을 볼 수 있다.
또한 replaceAll은 regular expression, 즉 '정규표현식' 이라고 아주 정확히 나와있다!
<결론>
replaceAll()은 정규표현식 포함 시 사용!
replace()은 문자열치환 용으로만 사용!
정규표현식의 정확한 의미와 용도, 종류에 대해서는 다음포스팅에서 알아보자!
'Dev Note > JAVA' 카테고리의 다른 글
[JAVA] 변수(Variable), 타입, 형변환 (0) | 2021.01.03 |
---|---|
[JAVA] 난수생성 Math.random() vs Random (2) | 2020.10.22 |
[JAVA기초] 변수(Variable)의 개념과 명명규칙 (0) | 2020.05.19 |