Here you can find the source of parseDelimitedList(String list, char delimiter)
Parameter | Description |
---|---|
list | String containing delimited substrings |
delimiter | Delimiter (anything except ' ' is allowed) |
public static String[] parseDelimitedList(String list, char delimiter)
//package com.java2s; /**//from ww w .java 2 s. c o m * Copyright (c) 2000, Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.ArrayList; import java.util.StringTokenizer; public class Main { /** * Parse a list of substrings separated by a given delimiter. The delimiter * can also appear in substrings (just double them): * * parseDelimitedString("this|is", '|') returns ["this","is"] * parseDelimitedString("this||is", '|') returns ["this|is"] * * @param list String containing delimited substrings * @param delimiter Delimiter (anything except ' ' is allowed) * * @return String[] A String array of parsed substrings */ public static String[] parseDelimitedList(String list, char delimiter) { String delim = "" + delimiter; // Append a sentinel of delimiter + space // (see comments below for more info) StringTokenizer st = new StringTokenizer(list + delim + " ", delim, true); ArrayList<String> v = new ArrayList<String>(); String lastToken = ""; StringBuilder word = new StringBuilder(); // We keep a sliding window of 2 tokens // // delimiter : delimiter -> append delimiter to current word // and clear most recent token // (so delim : delim : delim will not // be treated as two escaped delims.) // // tok : delimiter -> append tok to current word // // delimiter : tok -> add current word to list, and clear it. // (We append a sentinel that conforms to this // pattern to make sure we've pushed every parsed token) while (st.hasMoreTokens()) { String tok = st.nextToken(); if (lastToken != null) { if (tok.equals(delim)) { word.append(lastToken); if (lastToken.equals(delim)) { tok = null; } } else { if (word.length() != 0) { v.add(word.toString()); } word.setLength(0); } } lastToken = tok; } return v.toArray(new String[0]); } /** * @return a string representation of the given native array. */ public static String toString(float[] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append(iArray[i]); if (i != (iArray.length - 1)) { buffer.append(", "); } } buffer.append("]"); return buffer.toString(); } /** * @return a string representation of the given native array. */ public static String toString(long[] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append(iArray[i]); if (i != (iArray.length - 1)) { buffer.append(", "); } } buffer.append("]"); return buffer.toString(); } /** * @return a string representation of the given native array */ public static String toString(int[] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append(iArray[i]); if (i != (iArray.length - 1)) { buffer.append(", "); } } buffer.append("]"); return buffer.toString(); } /** * @return a string representation of the given array. */ public static String toString(String[] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append("'").append(iArray[i]).append("'"); if (i != iArray.length - 1) { buffer.append(", "); } } buffer.append("]"); return buffer.toString(); } /** * Returns the string, in single quotes, or "NULL". Intended only for * logging. * * @param s the string * @return the string, in single quotes, or the string "null" if it's null. */ public static String toString(String s) { if (s == null) { return "NULL"; } else { return new StringBuilder(s.length() + 2).append("'").append(s) .append("'").toString(); } } /** * @return a string representation of the given native array */ public static String toString(int[][] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append("["); for (int j = 0; j < iArray[i].length; j++) { buffer.append(iArray[i][j]); if (j != (iArray[i].length - 1)) { buffer.append(", "); } } buffer.append("]"); if (i != iArray.length - 1) { buffer.append(" "); } } buffer.append("]"); return buffer.toString(); } /** * @return a string representation of the given native array. */ public static String toString(long[][] iArray) { if (iArray == null) { return "NULL"; } StringBuilder buffer = new StringBuilder(); buffer.append("["); for (int i = 0; i < iArray.length; i++) { buffer.append("["); for (int j = 0; j < iArray[i].length; j++) { buffer.append(iArray[i][j]); if (j != (iArray[i].length - 1)) { buffer.append(", "); } } buffer.append("]"); if (i != iArray.length - 1) { buffer.append(" "); } } buffer.append("]"); return buffer.toString(); } /** * @return a String representation of the given object array. * The strings are obtained by calling toString() on the * underlying objects. */ public static String toString(Object[] obj) { if (obj == null) { return "NULL"; } StringBuilder tmp = new StringBuilder(); tmp.append("["); for (int i = 0; i < obj.length; i++) { tmp.append(obj[i].toString()); if (i != obj.length - 1) { tmp.append(","); } } tmp.append("]"); return tmp.toString(); } }