Java String Split by Word splitwords(String text)

Here you can find the source of splitwords(String text)

Description

splitwords

License

LGPL

Declaration

public static String[] splitwords(String text) 

Method Source Code

//package com.java2s;
/*/*from w  w  w . j  a  v a 2s  .c om*/
 *  This file is part of the Haven & Hearth game client.
 *  Copyright (C) 2009 Fredrik Tolf <fredrik@dolda2000.com>, and
 *                     Bj?rn Johannessen <johannessen.bjorn@gmail.com>
 *
 *  Redistribution and/or modification of this file is subject to the
 *  terms of the GNU Lesser General Public License, version 3, as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  Other parts of this source tree adhere to other copying
 *  rights. Please see the file `COPYING' in the root directory of the
 *  source tree for details.
 *
 *  A copy the GNU Lesser General Public License is distributed along
 *  with the source tree of which this file is a part in the file
 *  `doc/LPGL-3'. If it is missing for any reason, please see the Free
 *  Software Foundation's website at <http://www.fsf.org/>, or write
 *  to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 *  Boston, MA 02111-1307 USA
 */

import java.util.ArrayList;

public class Main {
    public static String[] splitwords(String text) {
        ArrayList<String> words = new ArrayList<String>();
        StringBuilder buf = new StringBuilder();
        String st = "ws";
        int i = 0;
        while (i < text.length()) {
            char c = text.charAt(i);
            if (st == "ws") {
                if (!Character.isWhitespace(c))
                    st = "word";
                else
                    i++;
            } else if (st == "word") {
                if (c == '"') {
                    st = "quote";
                    i++;
                } else if (c == '\\') {
                    st = "squote";
                    i++;
                } else if (Character.isWhitespace(c)) {
                    words.add(buf.toString());
                    buf = new StringBuilder();
                    st = "ws";
                } else {
                    buf.append(c);
                    i++;
                }
            } else if (st == "quote") {
                if (c == '"') {
                    st = "word";
                    i++;
                } else if (c == '\\') {
                    st = "sqquote";
                    i++;
                } else {
                    buf.append(c);
                    i++;
                }
            } else if (st == "squote") {
                buf.append(c);
                i++;
                st = "word";
            } else if (st == "sqquote") {
                buf.append(c);
                i++;
                st = "quote";
            }
        }
        if (st == "word")
            words.add(buf.toString());
        if ((st != "ws") && (st != "word"))
            return (null);
        return (words.toArray(new String[0]));
    }
}

Related

  1. splitOne(String wordString)
  2. splitUnit(String word)
  3. splitWord(List words, int listIndex)
  4. splitWords(String name)
  5. splitwords(String s)
  6. splitWords(String text, String splitter)