/* * Copyright (c) 2002 Jaru Soft, * All Rights Reserved. * * ÀÌ ¶óÀ̺귯¸®´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. * ¼ÒÇÁÆ®¿þ¾îÀÇ ÇǾ絵ÀÚ´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ °øÇ¥ÇÑ GNU ¾à¼Ò ÀÏ¹Ý °øÁß »ç¿ë Çã°¡¼ 2.1ÆÇ ¶Ç´Â * ±× ÀÌÈÄ ÆÇÀ» ÀÓÀÇ·Î ¼±ÅÃÇØ¼, ±× ±ÔÁ¤¿¡ µû¶ó ¶óÀ̺귯¸®¸¦ °³ÀÛÇϰųª Àç¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. * * ÀÌ ¶óÀ̺귯¸®´Â À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖÀ¸¸®¶ó´Â Èñ¸Á¿¡¼ ¹èÆ÷µÇ°í ÀÖÁö¸¸, * ƯÁ¤ÇÑ ¸ñÀû¿¡ ¸Â´Â ÀûÇÕ¼º ¿©ºÎ³ª ÆÇ¸Å¿ëÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖÀ¸¸®¶ó´Â * ¹¬½ÃÀûÀÎ º¸ÁõÀ» Æ÷ÇÔÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. * º¸´Ù ÀÚ¼¼ÇÑ »çÇ׿¡ ´ëÇØ¼´Â GNU ¾à¼Ò ÀÏ¹Ý °øÁß »ç¿ë Çã°¡¼¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù. * * GNU ¾à¼Ò ÀÏ¹Ý °øÁß »ç¿ë Çã°¡¼´Â ÀÌ ¶óÀ̺귯¸®¿Í ÇÔ²² Á¦°øµË´Ï´Ù. * * [°³¹ßÁ¤º¸] * ¸¸µçÀÌ : kangwoo(kangwoo@jarusoft.com) * ¸¸µç°÷ : ÀÚ·ç(http://www.jarusoft.com) * ¸¸µç³¯ : 2002. 04. 11. * * [°³¹ß±â·Ï] * 1.0.0 - 2002. 04. 11. kangwoo * : óÀ½ ¸¸µë * * 1.0.1 - 2008. 11. 11. badnom * : ÀçÁ¤¸® */ package kr.kangwoo.util; /** *
StrTokenizer Ŭ·¡½º¸¦ »ç¿ëÇϸé, ¹®ÀÚ¿À» ±¸ºÐÀÚ·Î ºÐÇÒ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
*±¸ºÐÀÚ »çÀÌ¿¡ ¾Æ¹«°Íµµ ¾øÀ¸¸é, °ø¹é¹®ÀÚ¸¦ ¹ÝȯÇÑ´Ù. * ex) 1||3 -> 1, °ø¹é, 3 ÀÌ·¸°Ô 3°³ÀÇ ÅäÅ«À» ¹ÝȯÇÑ´Ù. ** * @author kangwoo * @version v 1.0 */ public class StrTokenizer { private int currentPosition; private int maxPosition; private String str; private String delimiter; private int delimiterSize; private int countTokens = -1; // TokenÀÇ °¹¼ö /** * ´ë»ó ¹®ÀÚ¿¿¡ ´ëÇÑ Tokenizer¸¦ »ý¼ºÇÕ´Ï´Ù. ±¸ºÐÀÚ´Â ±âº»°ª(" ")À¸·Î »ç¿ëÇÕ´Ï´Ù. * * @param str ´ë»ó ¹®ÀÚ¿ */ public StrTokenizer(String str) { this(str, " "); } /** * ´ë»ó ¹®ÀÚ¿¿¡ ´ëÇÑ Tokenizer¸¦ »ý¼ºÇÕ´Ï´Ù. delim´Â ±¸ºÐÀÚÀÌ´Ï´Ù. * * * @param str ´ë»ó ¹®ÀÚ¿ * @param delim ±¸ºÐÀÚ * @throws NullPointerException - str °¡ null °æ¿ì */ public StrTokenizer(String str, String delim) { this.str = str; this.delimiter = delim; currentPosition = 0; maxPosition = this.str.length(); delimiterSize = this.delimiter.length(); } /** * ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÅäÅ«ÀÌ ´õ Á¸ÀçÇÏÁö¸¦ ÆÇ´ÜÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå°¡
true
¸¦ µ¹·ÁÁÖ´Â °æ¿ì, nextToken ¸Þ¼Òµå¸¦ È£ÃâÇØ ´ÙÀ½ ÅäÅ«À» °¡Á®°¥ ¼ö ÀÖ½À´Ï´Ù.
*
* @return Çö À§Ä¡ÀÇ µÚ·Î, 1°³ ÀÌ»óÀÇ ÅäÅ«ÀÌ Á¸ÀçÇÒ °æ¿ì true, ±×·¸Áö ¾ÊÀ» °æ¿ì false
*/
public boolean hasMoreTokens() {
return ( (currentPosition <= maxPosition) || (str.indexOf(delimiter, currentPosition) > -1));
}
/**
* ´ÙÀ½ ÅäÅ«À» ¹ÝȯÇÑ´Ù.
* ¹ÝȯÇÒ ÅäÅ«ÀÌ ¾øÀ¸¸é nullÀ» µ¹·ÁÁØ´Ù.
*
* @return ´ÙÀ½ ÅäÅ«
*/
public String nextToken() {
String result = null;
int index = str.indexOf(delimiter, currentPosition);
if (index > -1) {
result = str.substring(currentPosition, index);
currentPosition = index + delimiterSize;
} else {
result = str.substring(currentPosition);
currentPosition = maxPosition + delimiterSize;
}
return result;
}
/**
* ÅäÅ«ÀÇ ÃÑ °¹¼ö¸¦ ¹ÝȯÇÑ´Ù.
*
* @return ÅäÅ«ÀÇ ÃÑ °¹¼ö
*/
public int countTokens() {
if (countTokens < 0) {
int tCountTokens = 1;
int cPos = 0;
int index = 0;
while ((index = str.indexOf(delimiter, cPos)) > -1) {
tCountTokens++;
cPos = index + delimiterSize;
}
countTokens = tCountTokens;
}
return countTokens;
}
/**
* ¹è¿ Å©±â ¸¸ÅÀÇ ¹®ÀÚ¿¹è¿À» ¸¸µçÈÄ, ÅäÅ« °ªÀ» ä¿ö³ÖÀº ÈÄ ¹ÝȯÇÑ´Ù.
* ÅäÅ« °¹¼ö°¡ ¹è¿ Å©±âº¸´Ù ÀÛÀ» °æ¿ì´Â, ³ª¸ÓÁö °ªÀ» null·Î ¼³Á¤ÇѰí,
* ÅäÅ« °¹¼ö°¡ ¹è¿ Å©±âº¸´Ù Ŭ °æ¿ì´Â, ¹è¿ Å©±â¸¸Å¸¸ °ªÀ» ¼³Á¤ÇÑ´Ù.
*
* @param arraySize ¹è¿ Å©±â
* @return
*/
public String[] toArray(int arraySize) {
String[] array = new String[arraySize];
for (int i = 0; i < arraySize && hasMoreTokens(); i++) {
array[i] = nextToken();
}
return array;
}
/**
* ÅäÅ«µéÀ» ¹®ÀÚ¿¹è¿·Î ¸¸µç´Ù.
* ¹®ÀÚ¿¹è¿ÀÇ Å©±â´Â ÅäÅ«ÀÇ Å©±â·Î ¸¸µé¾îÁø´Ù.
*
* @return ¹®ÀÚ¿¹è¿
*/
public String[] toArray() {
return toArray(countTokens());
}
}