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 }