[Java] 문자열 자르기 - char형 구분자

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

 

[Java] 문자열 자르기 - split

지난 시간에는 index를 지정하여 문자열을 자르는 substring을 알아보았습니다. 이번 시간에는 특정 문자를 지정하여 여러 개의 문자열로 자르는 split을 알아보도록 하겠습니다. 문자열 사과, 배, 귤

smartpro.tistory.com

 

2020/12/12 - [Java] - [Java] 문자열 자르기 - substring

 

[Java] 문자열 자르기 - substring

Java 기본으로 제공하는 String 클래스에 편리한 기능들이 많이 들어있습니다. 그 중 하나가 문자열을 자를 때 사용하는 substring입니다. (split, StringTokenizer, 정규표현식을 활용한 여러 가지 방법이

smartpro.tistory.com

 

반응형