일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 상속
- Serializable
- 오라클
- transient
- set
- DB
- JDBC
- swing
- DB연동
- 예외처리
- Transaction
- Connection
- Reader
- Oracle
- 16bit
- 조회
- 다이얼로그
- InputStream
- driver
- array
- 8bit
- Join
- 난수
- Annotaion
- 자바
- where
- java
- stream
- statement
- select
- Today
- Total
오버플로
[Java] StringTokenizer 본문
StringTokenizer
- java.util 패키지에서 제공 (import해야 사용 가능함)
- 문자열을 짧은 한 마디(token)로 구분할 때 사용
- StringTokenizer는 값을 가지지 않음
> 값은 외부에 존재하고 그 제어권만 가지는 것
> pointer를 사용함 (한 방향으로만 진행)
** 다양한 생성자
1) StringTokenizer(String str)
- 입력되는 문자열의 공백(white space)로 토큰 생성
2) StringTokenizer(String str, String delim)
- 입력되는 문자열을 기준문자열로 토큰 생성
- 기준 문자열을 사용하여 토큰을 구분하는 생성자
3) StringTokenizer(String str, String delim, boolean returnDelims)
- 2)와 동일하나, 기준문자열을 토큰으로 취급할 것인지 결정하는 3번째 매개변수가 있음
** 자주 쓰이는 method
- countTokens() : 현재 남은 토큰의 개수
- hasMoreTokens() : 토큰 존재 여부 반환 // true or false
- nextToken() : 토큰을 얻고 포인터를 다음 토큰으로 이동시킴
- 위 method 들을 활용한 while 문이 자주 사용됨
> 형식 : while ( 객체명.hasMoreTokens() ) {
... 객체명.nextToken(); ... }
# 오늘의 코딩 #
- StringTokenizer를 활용해보자
package test;
import java.util.StringTokenizer;
public class UseStringTokenizer {
/**
* 문자열 데이터를 기준 문자열로 구분한 후 배열에 넣고 반환하는 method<br>
* @return 구분된 문자열
*/
public String[] separateData() {
String data = "짜장면,탕수육,짬뽕,볶음밥,팔보채,크림새우,깐풍기";
StringTokenizer str = new StringTokenizer(data, ","); // ,로 문자열 나누기
String[] dataArr = new String[str.countTokens()]; // token 수 만큼 배열 생성
int i = 0;
while (str.hasMoreTokens()) { // token을 배열에 할당하기 위한 while
dataArr[i] = str.nextToken(); // 배열[0]부터 token값 넣기
i++; // 배열 방을 바꿀 증감식
} // end while
return dataArr;
}// separateData
/**
* 제시된 이름 데이터에서 매개변수로 입력되는 "성"에 해당하는 이름이 몇 개인지 반환하는 method<br>
*
* @param lastName 매개변수로 입력되는 성
* @return 같은 성에 해당하는 이름 수
*/
public int findLastName(String lastName) {
int sameNum = 0; // 같은 성을 가진 이름의 개수를 저장할 변수
String data = "김가가,김나나,김다다,박가가,박나나,박다다,이다다,삼다다,안다다,하가가";
StringTokenizer str = new StringTokenizer(data, ",");
String[] nameArr = new String[str.countTokens()]; // token 수 만큼 배열 생성
int i = 0;
while (str.hasMoreTokens()) { // token을 배열에 할당하는 while
nameArr[i] = str.nextToken();
if (nameArr[i].startsWith(lastName)) { // 같은 성을 가졌으면 sameNum의 수가 하나씩 더해짐
sameNum++;
} // end if
} // end while
return sameNum;
}// findLastName
public static void main(String[] args) {
UseStringTokenizer st = UseStringTokenizer();
// separateData() method 사용
String[] dataArr = st.separateData(); // 다른 method에서 return한 배열을 할당
for (String s : dataArr) { // 배열 출력
System.out.printf("%-5s", s);
} // end for
// findLastName() method 사용
String lastName = "박";
System.out.println("\n" + st.findLastName(lastName));
}// main
}// class
- 둘다 문자열을 token으로 자른 후 배열에 잘 저장만 한다면 사용하기에 무리는 없었다.
- method 사용에 익숙해지면 좋을듯!
# 출력 결과 #
짜장면
탕수육
짬뽕
볶음밥
팔보채
크림새우
깐풍기
3
'Java' 카테고리의 다른 글
[Java] Calendar Class / VO Class (0) | 2021.08.02 |
---|---|
[Java] Date Class / SimpleDateFormat Class / Locale Class (0) | 2021.08.01 |
[Java] Math Class (0) | 2021.07.29 |
[Java] Interface (0) | 2021.07.28 |
[Java] Inner Class / Nested Class / Local Class / Anonymous Inner Class (0) | 2021.07.27 |