Language/Java

Java에서 파이프라인('|')을 split하는 방법

ABCD 2024. 3. 12.

안녕하세요. 장비충 개발자 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
반응형

댓글

💲 추천 글