
club.zhcs.utils.StringUtils Maven / Gradle / Ivy
package club.zhcs.utils;
import java.util.ArrayList;
import java.util.List;
import org.nutz.castor.Castors;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
/**
* @author Ixion
*
*/
public class StringUtils {
private StringUtils() {}
/**
* 字符串去除空白字符后从左到右按照一定位数插入字符
*
* @param str
* 源
* @param n
* 位数
* @param sp
* 插入字符
* @return 字符串
*/
public static String change(String str, int n, String sp) {
StringBuilder info = new StringBuilder();
String nstr = sTrim(str);
for (int i = 0; i < nstr.length(); i++) {
info.append(nstr.charAt(i));
if (i > 0 && (i + 1) % n == 0) {
info.append(sp);
}
}
return info.toString();
}
public static String getString(Object obj) {
return isNullOrEmpty(obj) ? "" : obj.toString();
}
public static boolean isNullOrEmpty(Object object) {
return object == null || Strings.isBlank(object.toString());
}
/**
* 字符串去除空白字符后从右到左按照一定位数插入字符
*
* @param str
* 源
* @param n
* 位数
* @param sp
* 插入字符
* @return 字符串
*/
public static String rChange(String str, int n, String sp) {
StringBuilder info = new StringBuilder();
String nstr = sTrim(str);
for (int i = nstr.length() - 1; i >= 0; i--) {
info.append(nstr.charAt(i));
if ((nstr.length() - i) % n == 0) {
info.append(sp);
}
}
return info.toString();
}
/**
* 去除全部空白
*
* @param in
* 输入字符串
* @return 字符串
*/
public static String sTrim(String in) {
return in.replaceAll("\\s*", "");
}
/**
* 将数字格式字符串转换成list
*
* @param source
* 源字符串,格式为1,2,3
* @return 数字数组
*/
public static List stringConvertList(String source) {
return stringConvertList(source, Integer.class);
}
public static List stringConvertList(String[] source, final Class clazz) {
final List target = new ArrayList<>();
Lang.each(source, (index, info, length) -> target.add(Castors.me().castTo(info, clazz)));
return target;
}
public static String reverse(String info) {
return new StringBuffer(info).reverse().toString();
}
public static List stringConvertList(String source, Class clazz) {
if (Strings.isBlank(source)) {
return new ArrayList<>();
}
String[] infos = source.split(",");
return stringConvertList(infos, clazz);
}
/**
* 替换字符串中的占位符
*
* @param openToken
* 占位符开始标识
* @param closeToken
* 占位符结束标识
* @param text
* 原始文本
* @param args
* 参数
* @return 替换结果
*/
public static String replaceTokens(String openToken, String closeToken, String text, Object... args) {
if (args == null || args.length <= 0) {
return text;
}
int argsIndex = 0;
if (text == null || text.isEmpty()) {
return "";
}
char[] src = text.toCharArray();
int offset = 0;
// search open token
int start = text.indexOf(openToken, offset);
if (start == -1) {
return text;
}
final StringBuilder builder = new StringBuilder();
StringBuilder expression = null;
while (start > -1) {
if (start > 0 && src[start - 1] == '\\') {
// this open token is escaped. remove the backslash and continue.
builder.append(src, offset, start - offset - 1).append(openToken);
offset = start + openToken.length();
} else {
// found open token. let's search close token.
if (expression == null) {
expression = new StringBuilder();
} else {
expression.setLength(0);
}
builder.append(src, offset, start - offset);
offset = start + openToken.length();
int end = text.indexOf(closeToken, offset);
while (end > -1) {
if (end > offset && src[end - 1] == '\\') {
// this close token is escaped. remove the backslash and continue.
expression.append(src, offset, end - offset - 1).append(closeToken);
offset = end + closeToken.length();
end = text.indexOf(closeToken, offset);
} else {
expression.append(src, offset, end - offset);
offset = end + closeToken.length();
break;
}
}
if (end == -1) {
// close token was not found.
builder.append(src, start, src.length - start);
offset = src.length;
} else {
String value = (argsIndex <= args.length - 1) ? nullOrString(argsIndex, args) : expression.toString();
builder.append(value);
offset = end + closeToken.length();
argsIndex++;
}
}
start = text.indexOf(openToken, offset);
}
if (offset < src.length) {
builder.append(src, offset, src.length - offset);
}
return builder.toString();
}
/**
* @param argsIndex
* @param args
* @return
*/
private static String nullOrString(int argsIndex, Object... args) {
return args[argsIndex] == null ? "" : args[argsIndex].toString();
}
/**
* 替换字符串中的占位符 ${} 形式
*
* @param text
* 原始文本
* @param args
* 参数
* @return 替换结果
*/
public static String replaceDollarBraceTokens(String text, Object... args) {
return replaceTokens("${", "}", text, args);
}
/**
* 替换字符串中的占位符 {} 形式
*
* @param text
* 原始文本
* @param args
* 参数
* @return 替换结果
*/
public static String replaceBraceTokens(String text, Object... args) {
return replaceTokens("{", "}", text, args);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy