String Tokenizer in Java II

Refer the first post on String Tokenizer here.

Lets play with a little complicated string in this post! This will just demonstrate how you can use Tokenizer in more often encountered string parsing situations.

Lets run....



package org.chandan.string.tokenizer;

import java.util.StringTokenizer;

public class StringTokenizerSample {

/*
* Notice that, first we need to tokenize with respect to ';' as
* delimiter.
* Then on generated tokens, we have to again tokenize
* with '=' as delimiter.
*/
private static final String SAMPLE_STRING_1=
    "name=myName;address=myAddress;phone=myPhone";

private static final String DELIM_EQUAL="=";

private static final String DELIM_SEMICOLON=";";
 
public static void main(String args[])
{
       System.out.println("PROCESSING STRING =     ["+SAMPLE_STRING_1+"]");
       System.out.println("----------------------------------------");
       processString(SAMPLE_STRING_1,DELIM_SEMICOLON,DELIM_EQUAL);
    System.out.println("");
    System.out.println("*********************************************");
}

private static void processString(String sample,String     delimiter1
,String delimiter2)
{
/*
* First tokenize whole string with respect to first delimeter.
* Then iterate over generated tokens to perform further tokenization.
*/
    StringTokenizer stringTokenizer=new    StringTokenizer(sample,delimiter1);
    System.out.println("TOTAL NO OF MAIN TOKENS FOUND: "
   +stringTokenizer.countTokens());
    int tokenCount=1;
   while(stringTokenizer.hasMoreElements())
   {
     String mainToken=stringTokenizer.nextElement().toString();
     System.out.println("");
     System.out.println("MAIN TOKEN["+tokenCount++ +"] -> "
+mainToken);
     System.out.println(".................................");
    StringTokenizer stringTokenizer2=new StringTokenizer(
mainToken,delimiter2);
    System.out.println("");
    System.out.println("TOTAL NO OF SUB TOKENS FOUND: "
    +stringTokenizer2.countTokens());
    int subTokenCount=1;
    while (stringTokenizer2.hasMoreElements())
    {
        System.out.println("SUB TOKEN["+subTokenCount++ +"] -> "
        +stringTokenizer2.nextElement());
     }//END OF INNER WHILE LOOP
   }//END OF OUTER WHILE LOOP
  }//END OF METHOD
}



OUTPUT:

PROCESSING STRING = [name=myName;address=myAddress;phone=myPhone]
----------------------------------------
TOTAL NO OF MAIN TOKENS FOUND: 3

MAIN TOKEN[1] -> name=myName
.................................

TOTAL NO OF SUB TOKENS FOUND: 2
SUB TOKEN[1] -> name
SUB TOKEN[2] -> myName

MAIN TOKEN[2] -> address=myAddress
.................................

TOTAL NO OF SUB TOKENS FOUND: 2
SUB TOKEN[1] -> address
SUB TOKEN[2] -> myAddress

MAIN TOKEN[3] -> phone=myPhone
.................................

TOTAL NO OF SUB TOKENS FOUND: 2
SUB TOKEN[1] -> phone
SUB TOKEN[2] -> myPhone

*********************************************

If you are looking for some tutorials on parsing an xml document, then check HERE.


Happy coding :)



.

String Tokenizer in Java I

You may come across a situation where in small string has to be parsed with respect to some delimiters instead of entire file.

Wait.. Don't just jump to code by looking character by character...that's tedious to do..isn't it?

Be smart enough to use well defined and built in classes & methods which serve your purpose :-)

I am telling about "java.util.StringTokenizer" class! Lets understand its capacity with a small example...


package org.chandan.string.tokenizer;

import java.util.StringTokenizer;

public class StringTokenizerSample {

   //Your String to be tokenized.
   private static final String SAMPLE_STRING_1=
   "a1,A2,a3,A4,a5";

   //delimiter used to tokenize.
   private static final String DELIM_COMMA=",";

   public static void main(String args[])
   {
     System.out.println("PROCESSING STRING = ["+SAMPLE_STRING_1+"]");
      System.out.println("----------------------------------------");

     processString(SAMPLE_STRING_1,DELIM_COMMA);

     System.out.println("");
     System.out.println("*********************************************");
  }

  private static void processString(String sample,String delimiters)
  {
      StringTokenizer stringTokenizer=new StringTokenizer(sample,delimiters);
      System.out.println("TOTAL NO OF TOKENS FOUND: "
      +stringTokenizer.countTokens());
      int tokenCount=1;

     while(stringTokenizer.hasMoreElements())
    {
       System.out.println("TOKEN["+tokenCount+"] = "
       +stringTokenizer.nextElement());
    }
  }

}


OUTPUT:

PROCESSING STRING = [a1,A2,a3,A4,a5]
----------------------------------------
TOTAL NO OF TOKENS FOUND: 5
TOKEN[1] = a1
TOKEN[2] = A2
TOKEN[3] = a3
TOKEN[4] = A4
TOKEN[5] = a5

*********************************************


If you are looking for some tutorials on parsing an xml document, then check HERE.

Still hungry...? Check next post on Tokenizer here

Got doubts ? Post as comments....Lets find solution together!
Happy coding :)


.