CSV 파일에서 데이터를 긁어올때 콤마(,) 단위로 split 을 한다.
주의해야할 점이 숫자 컬럼은 천단위에 콤마(,) 표시가 있어서 자칫 천단위마다 잘려버리는 경우가 있다.
그래서인지 숫자 컬럼은 "100,000" 이런식으로 따옴표("") 를 사용하여 하나의 컬럼인것을 표시를 해두는 것 같다.
그래서 따옴표("") 안에 있는 데이터들만 찾아서 그 안에 콤마(,) 를 제거하고 동시에 따옴표("") 도 제거하는 방법을
정리해보았다.
1. 따옴표("") 안에 데이터 찾기
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String tText = "가,abc,100,\"1,000\",\"400,000,000\",RXT100";
Pattern ptrn = Pattern.compile("\"(.*?)\""); // 따옴표 안에 있는 패턴 추출.
Matcher matcher = ptrn.matcher(tText);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
위와 같이 Pattern 과 정규표현식을 사용하여 따옴표("") 를 가지고 있는 패턴을 찾은 다음 출력해보았다.
결과는 아래와 같다.
2. 콤마(,) 와 따옴표("") 제거
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String realData = "가,abc,100,\"1,000\",\"400,000,000\",RXT100";
String tempData = realData;
Pattern ptrn = Pattern.compile("\"(.*?)\""); // 따옴표 안에 있는 패턴 추출.
Matcher matcher = ptrn.matcher(tempData);
System.out.println("수정전 : " + tempData);
while(matcher.find()) {
System.out.println(matcher.group());
tempData = matcher.replaceFirst(matcher.group().replace(",", "").replace("\"", ""));
matcher = ptrn.matcher(tempData);
}
System.out.println("수정후 : " + tempData);
System.out.println("원본 : " + realData);
}
}
Matcher 에서 제공하는 replaceFirst 를 사용하여 변경을 해주고
matcher 를 다시 엎어씌우는 형태로 진행하였다.
결과값은 위와 같이 확인할 수 있다.
Pattern 을 찾을 때마다 while 문을 수행할 것이고 이때 처음으로 찾은 부분을 수정된 데이터로 변경하는 방법이다.
괄호, 대괄호 등의 데이터일때도 정규표현식을 적절히 잘 조합하면 사용가능하다.
'일하딩 > Web' 카테고리의 다른 글
[Linux] HTTP 500 내부 서버 오류 해결법 (0) | 2021.03.29 |
---|---|
[Linux] 톰캣 클린 - tomcat clean (0) | 2021.03.29 |
[JSP] JSTL, EL 이란 무엇인가? (0) | 2020.11.17 |
[Java] JSON 파싱하는 방법! (0) | 2020.11.12 |
[CSS] Position 이란? (static, relative, sticky, fixed, absolute) (0) | 2020.07.26 |
댓글