Почему этот StringTokenizer не выполняет токены правильно после второго раза? - PullRequest
0 голосов
/ 17 ноября 2009

Я хочу проанализировать следующее, используя StringTokenizer для каждой строки, совпадающей с agent>. Я попробовал это с помощью кода, подобного этому. Куда я иду не так?

StringTokenizer stringtokenizer=new StringTokenize(hari,"agent>");

while(stringtokenizer.hasMoreTokens())
{
    String token = stringtokenizer.nextToken();
    System.out.println("output ="+token);
}

Это токенизация правильно только два раза, а затем она реагирует нерегулярно ... Я имею в виду впервые

output =ACT-USER::USER_1:AU01::******;


   SIMULATOR 09-11-17 09:37:01
M  AU01 COMPLD
;

Второй раз:

output =RTRV-HDR:::RH01;


   SIMULATOR 09-11-17 09:37:01
M  RH01 COMPLD
;

В третий раз:

output =RTRV-EQPT::ALL:RE01;


   SIMULATOR 09-11-17 09:37:02
M  RE01 DENY
   SROF
   /*S
output =us, R
output =qu
output =s
output =d Op
output =r
output =io
output = F
output =il
output =d*/
;


ACT-USER::USER_1:AU01::******;


   SIMULATOR 09-11-17 09:37:01
M  AU01 COMPLD
;
agent>RTRV-HDR:::RH01;


   SIMULATOR 09-11-17 09:37:01
M  RH01 COMPLD
;
agent>RTRV-EQPT::ALL:RE01;


   SIMULATOR 09-11-17 09:37:02
M  RE01 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>RTRV-ALM-EQPT::ALL:RA01;


   SIMULATOR 09-11-17 09:37:03
M  RA01 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>RTRV-ALM-EQPT::ALL:RA02::MJ,;


   SIMULATOR 09-11-17 09:37:03
M  RA02 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>RTRV-ALM-EQPT::ALL:RA03::MN,;


   SIMULATOR 09-11-17 09:37:04
M  RA03 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>RTRV-ALM-EQPT::ALL:RA04::MN,T-LASERCURR-1-HIGH;


   SIMULATOR 09-11-17 09:37:04
M  RA04 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>RTRV-PM-EQPT::ALL:RP01;


   SIMULATOR 09-11-17 09:37:05
M  RP01 DENY
   SROF
   /*Status, Requested Operation Failed*/
;
agent>INIT-SYS::SLOT-1-1-2:IS01::1;


   SIMULATOR 09-11-17 09:37:05
M  IS01 COMPLD
;
agent>CANC-USER::USER_1:CU01;


   SIMULATOR 09-11-17 09:37:06
M  CU01 DENY
   IIAC
   /*Invalid Access Identifier*/
;
agent>

Ответы [ 2 ]

5 голосов
/ 17 ноября 2009

Пожалуйста, дайте мне знать, куда я иду неправильно.

Вы не читали API. StringTokenizer не принимает строку как один разделитель. Он принимает строку, в которой каждый символ в строке рассматривается как разделитель из одного символа.

Попробуйте использовать String.split(...);

1 голос
/ 09 июня 2011

Попробуйте это,

int idx=0; int tokenCount;
String words[]=new String [500];
String message=//String to be tokenize;
StringTokenizer st=new StringTokenizer(message);
tokenCount=st.countTokens();
System.out.println("Number of tokens = " + tokenCount);
while (st.hasMoreTokens()) // is there stuff to get?
    {words[idx]=st.nextToken(); idx++;}
for (idx=0;idx<tokenCount; idx++)
    { if(words[idx].equals("agent>");//do something

}
...