2020. 12. 30. 23:01ㆍ프로그래밍 언어/Java
다른 시스템과 인터페이스를 하다보면 데이터를 전송하기 위하여 데이터를 텍스트파일 또는 csv 파일에 저장하여 전송하는 경우가 있습니다.
csv 파일의 구분자는 ,(쉼표)이므로 그리 어렵지 않게 문자열을 잘라서 데이터를 추출할 수 있습니다.
그러나 텍스트파일인 경우 구분자를 |(파이프라인), ,(쉼표), _(언더바)를 쓰고 싶어도 데이터 중에 이 구분자를 사용하는 경우가 있으면 구분자를 다른 것들을 써야 합니다.
그러다보면 키보드로 입력하기 어려운 char형 구분자를 사용하는 경우가 있습니다.
위와 같이 데이터 사이에 구분자를 char형 구분자, 즉 ASCII 문자를 넣을 수 있습니다.
char형 구분자 사용법 생각해보기
아무래도 String은 char배열로 표현할 수 있으므로 for문으로 char 문자 1개씩 읽어서 구분하는 방법이 가능하니다. 그러나 이 방법은 ASCII 구분자를 인식하면 그 전까지의 문자열을 따로 저장하거나 index를 저장하여 substring으로 분리해야 하는 복잡한 방법을 써야 합니다.
쉽게 하기 위해 String의 split 함수에 char형 구분자를 넣어서 사용하고 싶지만 에러가 발생합니다.
The method split(String) in the type String is not applicable for the arguments (int)
char형 구분자 사용하기
ASCII 문자를 구분자(delimiter)로 사용하는 경우 한 줄로 간단하게 String.split(Character.toString('ASCII문자'))로 문자열을 분할할 수 있습니다.
char DELIM = 0x08;
String data = "홍길동" + DELIM + "우산국" + DELIM + "남자";
String[] results = data.split(Character.toString(DELIM));
System.out.println("data = " + data);
for (int i = 0; i < results.length; i++) {
System.out.println("results[" +i + "] = " + results[i]);
}
// 출력
data = 홍길동우산국남자
results[0] = 홍길동
results[1] = 우산국
results[2] = 남자
ASCII코드는 OS, 인코딩 환경 등에 따라 화면에 다르게 표시될 수도 있습니다.
그리고 가끔씩 한글이나 한자 옆에 있으면 같이 깨지는 현상이 발생하기도 합니다.
참고로 제 PC에서는 구분자 모양이 다르게 표시됩니다.
검은 네모 안에 동그라미가 표시되는 것이 아니라 하얀 네모에 물음표가 표시되었네요.
관련글 :
2020/12/16 - [Java] - [Java] 문자열 자르기 - split
2020/12/12 - [Java] - [Java] 문자열 자르기 - substring
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 문자열 자르기(추출) - 정규표현식 예제 (0) | 2021.01.08 |
---|---|
[Java] 문자열 자르기(추출) - 정규표현식(Pattern, Matcher) (0) | 2021.01.04 |
[Java] 문자열 자르기 - 정규표현식(split) (0) | 2020.12.28 |
[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기 (0) | 2020.12.21 |
[Java] 문자열 자르기 - StringTokenzer (0) | 2020.12.17 |