Here you can find the source of splitShifted(int[] shiftedQuoteString)
private static List splitShifted(int[] shiftedQuoteString)
//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; } }