001    package com.thaiopensource.xml.util;
002    
003    public class StringSplitter {
004      private StringSplitter() {
005      }
006    
007      public static String[] split(String str) {
008        int len = str.length();
009        int nTokens = 0;
010        for (int i = 0; i < len; i++)
011         if (!isSpace(str.charAt(i)) && (i == 0 || isSpace(str.charAt(i - 1))))
012           nTokens++;
013        String[] tokens = new String[nTokens];
014        nTokens = 0;
015        int tokenStart = -1;
016        for (int i = 0; i < len; i++) {
017          if (isSpace(str.charAt(i))) {
018            if (tokenStart >= 0) {
019              tokens[nTokens++] = str.substring(tokenStart, i);
020              tokenStart = -1;
021            }
022          }
023          else if (i == 0 || isSpace(str.charAt(i - 1)))
024           tokenStart = i;
025        }
026        if (tokenStart >= 0)
027          tokens[nTokens] = str.substring(tokenStart, len);
028        return tokens;
029      }
030    
031      private static boolean isSpace(char c) {
032        switch (c) {
033        case ' ':
034        case '\r':
035        case '\n':
036        case '\t':
037          return true;
038        }
039        return false;
040      }
041    
042    }