StringTool.java 5.18 KB
package com.taover.bazhuayun.analysis.util;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.taover.util.UtilString;


public class StringTool {
	public static String sortSplitStr(String cutTime, String splitStr, boolean isRemoveSame) {
		if(cutTime == null || cutTime.isEmpty()) {
			return cutTime;
		}
		String[] cutTimeArr = cutTime.split(splitStr);
		List<String> data = new ArrayList<String>(cutTimeArr.length);
		for(String item: cutTimeArr) {
			int insertIndex = -1;
			boolean isSame = false;
			for(int i=0; i<data.size(); ++i) {
				if(item.compareTo(data.get(i)) < 0){
					insertIndex = i;
				}else if(item.compareTo(data.get(i)) == 0){
					insertIndex = i;
					isSame = true;
				}
			}
			if(isSame && isRemoveSame) {
				continue;
			}
			if(insertIndex == -1) {
				data.add(item);
			}else if(insertIndex >= 0){
				data.add(insertIndex, item);
			}			
		}
		return StringUtils.join(data, ",");
	}
	
	public static String getOrTruncStr(String data, int allowLen) {
		if(data == null) {
			return "";
		}
		byte[] dataByte = data.getBytes();
		if(dataByte.length > allowLen) {
			return new String(dataByte, 0, allowLen);
		}else {
			return data;
		}
	}
	
	public static List<String> splitByStringArr(String source, String[] patterns) {
		List<String> result = new ArrayList<String>();
		if(source == null) {
			return result;
		}
		if(patterns == null || patterns.length == 0) {
			result.add(source);
			return result;
		}
		String patternStr = StringUtils.join(patterns);
		int subSourceStartIndex = 0;
		for(int i=0; i<source.length(); ++i) {
			String item = source.substring(i, i+1);
			if(patternStr.contains(item)) {
				if(i > subSourceStartIndex) {
					result.add(source.substring(subSourceStartIndex, i));
				}
				subSourceStartIndex = i+1;
			}
		}
		if(subSourceStartIndex < source.length()) {
			result.add(source.substring(subSourceStartIndex, source.length()));
		}
		return result;
	}
	
	public static List<String> removeSuffixSplitOrder(List<String> data) {
		List<String> result = new ArrayList<String>();		
		if(data == null || data.isEmpty()) {
			return result;
		}
		for(String item: data) {
			item = item.trim();
			if(item.contains("-") && item.startsWith("W20")) {
				String tempSubStr = item.substring(0, item.indexOf("-"));
				if(StringUtils.isNotBlank(tempSubStr)) {
					result.add(tempSubStr.trim());
				}
			}else {
				result.add(item);
			}
		}
		return result;
	}
	
	public static void trimObject(Object targetObj) {
		Field[] tField = targetObj.getClass().getDeclaredFields();
		for(int i=0; i<tField.length; ++i) {
			Field item = tField[i];
			item.setAccessible(true);
			if("String".equals(item.getType().getSimpleName())) {
				try {
					Object data = item.get(targetObj);
					if(data == null) {
						continue;
					}
					item.set(targetObj, UtilString.trimByRegexS(data.toString()));
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	public static List<String> replaceAll(List<String> data, String pattern, String target){
		List<String> result = new ArrayList<String>();
		if(data == null || data.isEmpty()) {
			return result;
		}
		for(String item: data) {
			result.add(item.replaceAll(pattern, target));
		}
		return result;
	}
	
	public static int getStringIndexByPatternContains(String pattern, String compares[]){
		//参数检验
		if(pattern==null || compares==null){
			return -1;
		}
		
		//循环遍历compares
		for(int i=0; i<compares.length; ++i){
			if(pattern.contains(compares[i])){
				return i;
			}
		}
		return -1;
	}
	
	public static int getStartWithStringIndex(String pattern, String compares[]){
		//参数检验
		if(pattern==null || compares==null){
			return -1;
		}
		
		//循环遍历compares
		for(int i=0; i<compares.length; ++i){
			if(compares[i].startsWith(pattern)){
				return i;
			}
		}
		return -1;
	}
	
	public static int getStartWithStringIndex(String pattern, List<String> compares){
		//参数检验
		if(pattern==null || compares==null){
			return -1;
		}
		
		//循环遍历compares
		for(int i=0; i<compares.size(); ++i){
			if(compares.get(i).startsWith(pattern)){
				return i;
			}
		}
		return -1;
	}
	
	public static void main(String args[]) {
		//String source = ";SF1 SF2; SF3;SF4,SF5;";
		//System.out.println(splitByStringArr(source, new String[] {";; ,"}));
		
//		User u1 = new User(null, 12, null);
//		trimObject(u1);
//		System.out.println(u1.toString());
//		User u2 = new User(" d s ", 12, null);
//		trimObject(u2);
//		System.out.println(u2.toString());
//		User u3 = new User("* 3223 ", 12, null);
//		trimObject(u3);
//		System.out.println(u3.toString());
		
		//System.out.println(StringUtils.join(StringTool.splitByStringArr("asdfasdf\nsdfsdf", ColumnDataBean.SPLIT_INFO_CHAR_ARR), "<->"));
		System.out.println(replaceAll(Arrays.asList("asdf;asdfasdf"), "[;;]", " "));
	}
}

class User{
	private String name = "2323";
	private int age = 1;
	private List<User> data;
	public User(String name, int age, List<User> data) {
		super();
		this.name = name;
		this.age = age;
		this.data = data;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + ", data=" + data + "]";
	}
}