Java String Split by Separator splitStringWithBracesOnSeparator(String string, char separator)

Here you can find the source of splitStringWithBracesOnSeparator(String string, char separator)

Description

Split string no separator char, taking into account braces.

License

Open Source License

Parameter

Parameter Description
string a parameter
separator a parameter

Declaration

public static List<String> splitStringWithBracesOnSeparator(String string, char separator) 

Method Source Code

//package com.java2s;
/*/*www .  j  a  v  a 2  s  . c  o m*/
 This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
    
 This program is free software; you can redistribute it and/or modify it under
 the terms of the GNU Affero General Public License as published by the Free
 Software Foundation; either version 3 of the License, or (at your option) any
 later version.
    
 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 Affero General Public License for more details.
    
 You should have received a copy of the GNU Affero General Public License along
 with this program; if not, see http://www.gnu.org/licenses or write to the Free
 Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
 */

import java.util.ArrayList;

import java.util.List;

public class Main {
    /**
     * Split string no separator char, taking into account braces.
     * @param string
     * @param separator
     * @return
     */
    public static List<String> splitStringWithBracesOnSeparator(String string, char separator) {
        List<String> tokens = new ArrayList<String>();
        if (string != null && string.length() > 0) {
            int depth = 0;
            StringBuilder current = new StringBuilder();
            for (int i = 0; i < string.length(); i++) {
                char c = string.charAt(i);
                if (depth <= 0 && c == separator) {
                    tokens.add(current.toString());
                    current = new StringBuilder();
                } else {
                    if (c == '(') {
                        depth++;
                    } else if (c == ')') {
                        depth--;
                    }
                    current.append(c);
                }
            }
            // add last one
            tokens.add(current.toString());
        }
        return tokens;
    }
}

Related

  1. splitNotRegex(String str, String separatorChars)
  2. splitSmart(String s, char separator)
  3. splitStaySeparator(String str, char token)
  4. splitString(String sInput, String sSeparator)
  5. splitStringToLong(String strInput, String separator)
  6. splitStructs(String str, char separator)
  7. splitToList(String s, String separator)
  8. splitValues(String concatedValues, String separator)
  9. splitValues(String values, String separator)