자바 String split 방법 재 작성

자바 jdk String 의 split 방법 은 문자열 을 분할 할 때 문자열 의 시작 부분 에 분할 표 시 를 하면 분할 이 끝 난 후에 문자열 배열 의 첫 번 째 요소 가 비어 있 으 면 업무 논리 처리 에 작은 번 거 로 움 을 줄 수 있 습 니 다.개조 해 봐.
package cn.com.king.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
	
	/**
	 *      ,        , splitChar false ,        。   jdk string split   
	 * @param input        
	 * @param regex         ,     
	 * @param splitChar         ,      
	 * @param isAfter                    ,    
	 * @return List     
	 */
	public static List split(String input, String regex, boolean splitChar, boolean isAfter) {
		List list = new ArrayList();
		if (null == input || "".equals(input)) {
			return list;
		}
		int beginIndex = 0;
		int length = input.length();
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			int matcherStart = matcher.start();
			int matcherEnd = matcher.end();
			String ele = "";
			if (splitChar && isAfter) {
				ele = input.substring(beginIndex, matcherEnd);
			} else {
				ele = input.substring(beginIndex, matcherStart);
			}
			//if     ,else      
			if (splitChar) {
				if (isAfter) {
					beginIndex = matcherEnd;
				} else {
					beginIndex = matcherStart;
				}
			} else {
				beginIndex = matcherEnd;
			}
			//              ,   。  java              。
			if (0 == matcherStart && false == isAfter) {
				continue;
			}
			list.add(ele);
		}
		if (beginIndex < length) {
			list.add(input.substring(beginIndex));
		}
		return list;
	}
	
	/**
	 *      
	 * @param input        
	 * @param regex         ,     
	 * @param splitChar         ,      
	 * @return List     
	 */
	public static List split(String input, String regex, boolean splitChar) {
		return split(input, regex, splitChar, false);
	}
	
	/**
	 *      
	 * @param input        
	 * @param regex         ,     
	 * @return List     
	 */
	public static List split(String input, String regex) {
		return split(input, regex, false);
	}
	
	public static void main(String[] args) {
		System.out.println(split("#menu*A#123#12*  #444", "\\*|#"));
		System.out.println(split("menu", "\\*|#"));
	}
}

좋은 웹페이지 즐겨찾기