Java String Split by Quote splitShifted(int[] shiftedQuoteString)

Here you can find the source of splitShifted(int[] shiftedQuoteString)

Description

split Shifted

License

Open Source License

Declaration

private static List splitShifted(int[] shiftedQuoteString) 

Method Source Code


//package com.java2s;
/*/*from  ww  w.  j a  v a2 s  .com*/
 * Distributed as part of mchange-commons-java 0.2.9
 *
 * Copyright (C) 2015 Machinery For Change, Inc.
 *
 * Author: Steve Waldman <swaldman@mchange.com>
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of EITHER:
 *
 *     1) The GNU Lesser General Public License (LGPL), version 2.1, as 
 *        published by the Free Software Foundation
 *
 * OR
 *
 *     2) The Eclipse Public License (EPL), version 1.0
 *
 * You may choose which license to accept if you wish to redistribute
 * or modify this work. You may offer derivatives of this work
 * under the license you have chosen, or you may provide the same
 * choice of license which you have been offered here.
 *
 * This software 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.
 *
 * You should have received copies of both LGPL v2.1 and EPL v1.0
 * along with this software; see the files LICENSE-EPL and LICENSE-LGPL.
 * If not, the text of these licenses are currently available at
 *
 * LGPL v2.1: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
 *  EPL v1.0: http://www.eclipse.org/org/documents/epl-v10.php 
 * 
 */

import java.util.List;
import java.util.ArrayList;

public class Main {
    private static List splitShifted(int[] shiftedQuoteString) {
        List out = new ArrayList();

        int sstart = 0;
        for (int finger = 0, len = shiftedQuoteString.length; finger <= len; ++finger) {
            if (finger == len || shiftedQuoteString[finger] == ',') {
                int slen = finger - sstart;

                // trim unquoted whitespace next to commas
                // note that whitespace chars in quotes will be shifted, so won't look like whitespace chars
                int tstart;
                int tlen = -1;
                for (tstart = sstart; tstart <= finger; ++tstart) {
                    if (tstart == finger) {
                        tlen = 0;
                        break;
                    } else if (shiftedQuoteString[tstart] != ' ' && shiftedQuoteString[tstart] != '\t')
                        break;
                }
                if (tlen < 0) {
                    if (tstart == finger - 1)
                        tlen = 1;
                    else {
                        for (tlen = finger - tstart; tlen > 0; --tlen) {
                            int index = tstart + tlen - 1;
                            if (shiftedQuoteString[index] != ' ' && shiftedQuoteString[index] != '\t')
                                break;
                        }
                    }

                }

                //DEBUG
                //tlen = slen;
                //tstart = sstart;
                //END DEBUG

                int[] trimsplit = new int[tlen];
                if (tlen > 0)
                    System.arraycopy(shiftedQuoteString, tstart, trimsplit, 0, tlen);
                out.add(trimsplit);
                sstart = finger + 1;
            }
        }
        return out;
    }
}

Related

  1. splitQuotedStr(String str, char delimiter, char quote, boolean trim)
  2. splitQuotedString(String str)
  3. splitQuotedString(String str)
  4. splitQuotedTokens(String str)
  5. splitSafeQuote(String input, char separator)
  6. splitStringWithQuotes(String in)
  7. splitWithQuotes(String s)