All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.utils.CharSequence Maven / Gradle / Ivy

package club.zhcs.utils;

import java.util.ArrayList;
import java.util.List;

import org.nutz.lang.Lang;

/**
 * 字符串内码编码解码方法
 * 
 * @author Kerbores
 * 
 */
public class CharSequence {
	/**
	 * 解码
	 * 
	 * @param data 数据数组
	 * @return 原数据
	 */
	public static String decode(Integer[] data) {
		return decode(Lang.array2list(data));
	}

	/**
	 * 解码
	 * 
	 * @param data 数据list
	 * @return 原数据
	 */
	public static String decode(List data) {
		return new CharSequence(data).toString();
	}

	/**
	 * 解码
	 * 
	 * @param data 数据串 用 ',' 分隔
	 * @return 原数据
	 */
	public static String decode(String data) {
		List value = parse(data);
		return decode(value);
	}

	/**
	 * NB解码
	 * 
	 * @param data  数据
	 * @param times 次数
	 * @return 解码结果
	 */
	public static String decode(String data, int times) {
		String target = data;
		String cache = null;
		for (int i = 0; i < times; i++) {
			try {
				target = decode(target);
			} catch (Exception e) {
				return cache;
			}
			cache = target;
		}
		return target;
	}

	/**
	 * 编码
	 * 
	 * @param info 带编码字符串
	 * @return 编码结果串
	 */
	public static List encode(String info) {
		return new CharSequence(info).getValue();
	}

	/**
	 * 编码成串
	 * 
	 * @param info 数据
	 * @return 返回串
	 */
	public static String encodeToString(String info) {
		StringBuilder builder = new StringBuilder();
		for (Integer i : encode(info)) {
			builder.append(i + ",");
		}
		if (builder.length() == 0) {
			return "";
		}
		return builder.substring(0, builder.length() - 1);
	}

	/**
	 * 编码成串
	 * 
	 * @param info  数据
	 * @param times 次数
	 * @return 返回串
	 */
	public static String encodeToString(String info, int times) {
		String target = info;
		for (int i = 0; i < times; i++) {
			target = encodeToString(target);
		}
		return target;
	}

	private static List parse(String data) {
		List target = new ArrayList<>();
		String[] infos = data.split(",");
		for (String info : infos) {
			target.add(Integer.parseInt(info.trim()));
		}
		return target;
	}

	private List value = new ArrayList<>();

	private String stringValue;

	public CharSequence(List value) {
		this.value = value;
		this.stringValue = toString();
	}

	private CharSequence(String in) {
		for (char c : in.toCharArray()) {
			value.add((int) c);
		}
		this.stringValue = in;
	}

	public String getStringValue() {
		return stringValue;
	}

	public List getValue() {
		return value;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy