Notice
Recent Posts
Recent Comments
Link
Everything has an expiration date
140 - Java 자바의 주요 클래스 : StringTokenizer 클래스, hasMoreTokens(), nextToken(), countTokens() 본문
[Java]
140 - Java 자바의 주요 클래스 : StringTokenizer 클래스, hasMoreTokens(), nextToken(), countTokens()
Jelly-fish 2023. 9. 19. 13:59/*==============================================
■■■ 자바의 주요(중요) 클래스 ■■■
- 자바에서 기본적으로 제공하는 주요 클래스들
- StringTokenizer 클래스 (개념만 숙지~!!!)
================================================*/
/*
○ StringTokenizer 클래스는
문자열 파싱(parsing)을 위한 정보를 제공하는 클래스로
파싱(parsing)하고자 하는 문자열을 인자로 받아 생성하는데,
여기에서 사용되는 파싱(parsing) 이라는 개념은
하나의 문자열을 여러 문자열로 나누는 작업을 의미하게 되며,
이 때 나누는 단위가 되는 문자열을 토큰(token)이라고 한다.
StringTokenizer 클래스를 사용하기 위해서는
java.util. 패키지의 StringTokenizer 를 import 해야 한다.
StringTokenizer 클래스는 호환성을 유지하는 목적으로
보관 유지되고 있으며, 문자열을 파싱(parsing)하기 위해서는
String 클래스의 split() 메소드나, javax.util.regex 패키지를
사용할 것을 권장하고 있다.
○ 생성자
- 원형
StringTokenizer(String str)
StringTokenizer(String str, String delim)
StringTokenizer(String str, String delim, boolean returnDelims)
: 주어진 문자열 str 을 단어로 분리하는 객체를 생성하며
공백(구분) 문자는 delim 에 포함된 문자로 처리하게 된다.
만약 returnDelims 가 true 이면
구분 문자도 분리된 데이터로 처리하게 된다.
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Test140
{
public static void main(String[] args) throws IOException
{
String strTemp;
String[] strArr;
int n;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("파싱할 문자열 입력(컴마 구분) : " );
strTemp = br.readLine();
//-- "사과, 딸기, 바나나, 포도"
// StringTokenizer 클래스 인스턴스 생성
StringTokenizer st = new StringTokenizer(strTemp, ",");
//-- strTemp 를 대상 문자열로... ("사과, 딸기, 바나나, 포도");
// 『","』를 구분자로...
// 테스트(확인)
System.out.println(st.countTokens());
//--==>> 파싱할 문자열 입력(컴마 구분) : 사과,딸기,바나나,포도
// 4
//-- StringTokenizer 의 『int countTokens()』 메소드
// : 파싱된 문자열의 개수를 반환(리턴)한다.
strArr = new String[st.countTokens()];
// -------------------
// 4
// → strArr = new String[4];
n = 0;
// hasMoreTokens()
// 이 토크나이저의 문자열에서 사용 가능한 토큰이 더 있는지 테스트합니다.
// 문자열을 읽어들이는 입장에서...
// hasMoretokens() → 다음 값이 있는지 없는지만 알려주는 메소드. (반환값 boolean)
// nextToken() → 실제로 문자열 "사과"를 데려오는 메소드. (반환값 String)
//
// hasMoreTokens() ← 망보기
//
// ▼ nextToken() ← 읽어들인 문자열 "사과" 를 반환함
//===============================
// "사과" "딸기" "바나나" "포도"
//===============================
while(st.hasMoreTokens()) // true true true true false
{
strArr[n++] = st.nextToken();
// strArr[0] = st.nextToken();
// --------------
// strArr[0] = "사과";
// strArr[1] = "딸기";
// strArr[2] = "바나나";
// strArr[3] = "포도";
}
//-- 『hasMoreTokens』
// : 사용할 수 있는 토큰이 남아있는 경우 true 를 반환.
// 더 이상 사용할 토큰이 없는 경우 false 를 반환.
// 확인에 대한 결과만 반환할 뿐...
// 실제 내용을 읽어들이지도 않고,
// 실제 내용을 읽어들이는 헤드를 이동시키지도 않는다.
//-- 『nextToken()』
// : 다음 토큰을 얻어온다.
// 다음 토큰을 얻어오면헤드를 이동시키게 된다.
// 구분자를 바꾸었을 경우 다음 호출에도
// 바뀐 구분자를 이용하여 토큰을 분리한다.
System.out.print("파싱된 토큰(문자열) : ");
for(String str : strArr)
System.out.print(str + " ");
System.out.println();
//--==>> 파싱된 토큰(문자열) : 사과 딸기 바나나 포도
// 계속하려면 아무 키나 누르십시오 . . .
}
}
'[Java]' 카테고리의 다른 글
142 - Java 자바의 주요 클래스 : Calendar 클래스, Calendar.get(Calendar.YEAR) MONTH, DATE, DAY_OF_MONTH, getInstance(), Calendar.set(y, m, d) (0) | 2023.09.19 |
---|---|
141 - Java 자바의 주요 클래스 : 캐릭터 셋(Character Set), getBytes(), new String(byte[], incoding) (0) | 2023.09.19 |
007 - 자바의 관계 연산 및 대입 연산 (0) | 2023.08.28 |
006 - 자바 강제 형 변환, 기본 데이터 저장 타입과 접미사 L, l (long) F, f(float) (0) | 2023.08.28 |
005 - 자바 문자열 결합 (0) | 2023.08.28 |