안녕하세요. 장비충 개발자 ABCD입니다.
오늘은 제가 실제로 개발을 하면서 직면한 문제를 가져왔는데요.
사수분께서 개발을 하는 과정에서 DB에 다양한 조건을 한 컬럼에 담기 위해 파이프라인('|')으로 구분을 지으신게 저에겐
큰 문제로 받아졌는데요.....
자 그럼 시작해보시죠.
저는 파이프라인으로 구분을 지어 놓은 것을 콤마(',')로 변경해야 하는 상황에 직면하게 되었어요.
우선 Java에서 replaceAll() 메서드를 통해 해당 문제를 해결하려고 했습니다.
String str = " | A, B, C | | | 과자, 과일 | ";
String tempStr = str.replaceAll(" | ", "");
System.out.println(tempStr);
//A, B, C 과자, 과일
위와 같은 상황에서는 단순히 reaplceAll을 하게 되면 다음과 같이 결과같이 나오겠죠??
우리가 원하는 A, B, C, 과자, 과일 의 경우와는 다른겁니다. 콤마(',')가 하나 없으니까요.
그래서 split을 사용해서 배열을 만들고 해당 문자열을 += 해가면서 콤마(',')를 찍는 방식을 사용하기로 했습니다.
String str = " | A, B, C | | | 과자, 과일 | ";
String[] tempStrArrs = str.split(" | ");
String resultStr = "";
for(int i = 0; i< tempStrArrs.length; i++){
if(i < tempStrArrs.length -1){
resultStr += tempStrArrs[i] + ",";
} else {
resultStr += tempStrArrs[i];
}
}
하지만 정상작동 하지 않았습니다. 문제를 해결하기 위해 구글링을 실행했죠.
그 후 도달한 결론.... 파이프라인은('|')은 정규식으로 인식하지 않게 처리를 해주어야한다 입니다.
따라서 파이프라인의 경우 대괄호를 감싸서 사용해야 하는 것이죠. "[|]" 이렇게 말이죠.
String str = " | A, B, C | | | 과자, 과일 | ";
String[] tempStrArrs = str.split(" [|] ");
String resultStr = "";
for(int i = 0; i< tempStrArrs.length; i++){
if(i < tempStrArrs.length -1){
resultStr += tempStrArrs[i] + ",";
} else {
resultStr += tempStrArrs[i];
}
}
System.out.println(resultStr);
//A, B, C, 과자, 과일
이렇게 오늘은 직접 경험한 문제를 통해 좋은 정보를 전달해 드리고 싶어 글을 작성하게 되었습니다.
다들 즐겁게 개발하시고 즐겁게 개발공부하시기를 기원합니다. ㅎㅎ
728x90
반응형
'Language > Java' 카테고리의 다른 글
[Java] 개발자라면 알아야 할 Optional class?! (0) | 2023.04.11 |
---|---|
[Java] Generic, WildCard (<T>, <?>) (0) | 2023.04.10 |
Java 교집합, 부분집합, 차집합, 합집합 구하기 (1) | 2023.03.24 |
Map을 Value값으로 정렬하기 (0) | 2023.03.19 |
Java Deque란?? (0) | 2022.12.14 |
댓글