/* * 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()); } }