Here you can find the source of reverseDelimited(String str, char separatorChar)
public static String reverseDelimited(String str, char separatorChar)
//package com.java2s; /**/* w w w. j av a 2s . c o m*/ * ETRI Distributed Resource/Mediation System for new re-generation Energy Exchange * * Copyright ? [2016] ETRI. All rights reserved. * * This is a proprietary software of ETRI, and you may not use this file except in * compliance with license agreement with ETRI. Any redistribution or use of this * software, with or without modification shall be strictly prohibited without prior written * approval of ETRI, and the copyright notice above does not evidence any actual or * intended publication of such software. * * com.nc.common.utils : StringUtil.java * @author creme55 * @since 2016. 10. 12. * @version 1.0 * @see * @Copyright ? [2016] By ETRI. All rights reserved. * * <pre> * << ??????(Modification Information) >> * ????? ???? ???? * ------------- ----------- ------------------------- * 2016. 10. 12. creme55 ?? ???(???? ?? ????) * * </pre> **/ import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Main { public static final String EMPTY = ""; public static String reverseDelimited(String str, char separatorChar) { if (str == null) { return null; } String[] strs = split(str, separatorChar); reverseArray(strs); return join(strs, separatorChar); } public static String[] split(String str) { return split(str, null, -1); } @SuppressWarnings({ "rawtypes", "unchecked" }) public static String[] split(String str, char separatorChar) { // Performance tuned for 2.0 (JDK1.4) if (str == null) { return null; } int len = str.length(); if (len == 0) { return new String[0]; } List list = new ArrayList(); int i = 0, start = 0; boolean match = false; while (i < len) { if (str.charAt(i) == separatorChar) { if (match) { list.add(str.substring(start, i)); match = false; } start = ++i; continue; } match = true; i++; } if (match) { list.add(str.substring(start, i)); } return (String[]) list.toArray(new String[list.size()]); } public static String[] split(String str, String separatorChars) { return split(str, separatorChars, -1); } @SuppressWarnings({ "unchecked", "rawtypes" }) public static String[] split(String str, String separatorChars, int max) { if (str == null) { return null; } int len = str.length(); if (len == 0) { return new String[0]; } List list = new ArrayList(); int sizePlus1 = 1; int i = 0, start = 0; boolean match = false; if (separatorChars == null) { // Null separator means use whitespace while (i < len) { if (Character.isWhitespace(str.charAt(i))) { if (match) { if (sizePlus1++ == max) { i = len; } list.add(str.substring(start, i)); match = false; } start = ++i; continue; } match = true; i++; } } else if (separatorChars.length() == 1) { // Optimise 1 character case char sep = separatorChars.charAt(0); while (i < len) { if (str.charAt(i) == sep) { if (match) { if (sizePlus1++ == max) { i = len; } list.add(str.substring(start, i)); match = false; } start = ++i; continue; } match = true; i++; } } else { // standard case while (i < len) { if (separatorChars.indexOf(str.charAt(i)) >= 0) { if (match) { if (sizePlus1++ == max) { i = len; } list.add(str.substring(start, i)); match = false; } start = ++i; continue; } match = true; i++; } } if (match) { list.add(str.substring(start, i)); } return (String[]) list.toArray(new String[list.size()]); } private static void reverseArray(final Object[] array) { if (array == null) { return; } int i = 0; int j = array.length - 1; Object tmp; while (j > i) { tmp = array[j]; array[j] = array[i]; array[i] = tmp; j--; i++; } } public static String join(Object[] array) { return join(array, null); } public static String join(Object[] array, char separator) { if (array == null) { return null; } int arraySize = array.length; int bufSize = (arraySize == 0 ? 0 : ((array[0] == null ? 16 : array[0].toString().length()) + 1) * arraySize); StringBuffer buf = new StringBuffer(bufSize); for (int i = 0; i < arraySize; i++) { if (i > 0) { buf.append(separator); } if (array[i] != null) { buf.append(array[i]); } } return buf.toString(); } public static String join(Object[] array, String separator) { if (array == null) { return null; } if (separator == null) { separator = EMPTY; } int arraySize = array.length; int bufSize = ((arraySize == 0) ? 0 : arraySize * ((array[0] == null ? 16 : array[0].toString().length()) + ((separator != null) ? separator.length() : 0))); StringBuffer buf = new StringBuffer(bufSize); for (int i = 0; i < arraySize; i++) { if ((separator != null) && (i > 0)) { buf.append(separator); } if (array[i] != null) { buf.append(array[i]); } } return buf.toString(); } @SuppressWarnings("rawtypes") public static String join(Iterator iterator, char separator) { if (iterator == null) { return null; } StringBuffer buf = new StringBuffer(256); // Java default is 16, // probably too small while (iterator.hasNext()) { Object obj = iterator.next(); if (obj != null) { buf.append(obj); } if (iterator.hasNext()) { buf.append(separator); } } return buf.toString(); } @SuppressWarnings("rawtypes") public static String join(Iterator iterator, String separator) { if (iterator == null) { return null; } StringBuffer buf = new StringBuffer(256); // Java default is 16, // probably too small while (iterator.hasNext()) { Object obj = iterator.next(); if (obj != null) { buf.append(obj); } if ((separator != null) && iterator.hasNext()) { buf.append(separator); } } return buf.toString(); } public static String substring(String str, int start) { if (str == null) { return null; } // handle negatives, which means last n characters if (start < 0) { start = str.length() + start; // remember start is negative } if (start < 0) { start = 0; } if (start > str.length()) { return EMPTY; } return str.substring(start); } public static String substring(String str, int start, int end) { if (str == null) { return null; } // handle negatives if (end < 0) { end = str.length() + end; // remember end is negative } if (start < 0) { start = str.length() + start; // remember start is negative } // check length next if (end > str.length()) { end = str.length(); } // if start is greater than end, return "" if (start > end) { return EMPTY; } if (start < 0) { start = 0; } if (end < 0) { end = 0; } return str.substring(start, end); } public static boolean isWhitespace(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; } public static int indexOf(String str, char searchChar) { if (str == null || str.length() == 0) { return -1; } return str.indexOf(searchChar); } public static int indexOf(String str, char searchChar, int startPos) { if (str == null || str.length() == 0) { return -1; } return str.indexOf(searchChar, startPos); } public static int indexOf(String str, String searchStr) { if (str == null || searchStr == null) { return -1; } return str.indexOf(searchStr); } public static int indexOf(String str, String searchStr, int startPos) { if (str == null || searchStr == null) { return -1; } if (searchStr.length() == 0 && startPos >= str.length()) { return str.length(); } return str.indexOf(searchStr, startPos); } public static String toString(int value) { return Integer.toString(value); } }