字符串格式化
package com.demon.common.core.text;
import com.demon.common.utils.StringUtils;
/**
* 字符串格式化
*
* @author Demon-HY
*/
public class StrFormatter {
private static final String EMPTY_JSON = "{}";
/**
* 格式化字符串<br>
* 此方法简单将占位符 {} 按照顺序替换为参数,不支持直接打印 {}
*
* @param strPattern 字符串模板
* @param args 参数列表
* @return 结果
*/
public static String format(final String strPattern, final Object... args) {
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(args)) {
return strPattern;
}
final int strPatternLength = strPattern.length();
// 初始化定义好的长度以获得更好的性能
StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
int handledPosition = 0;
int delimIndex;// 占位符所在位置
for (Object o : args) {
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
if (delimIndex == -1) {
if (handledPosition == 0) {
return strPattern;
} else { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString();
}
} else {
// 正常占位符
sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(o));
handledPosition = delimIndex + 2;
}
}
// 加入最后一个占位符后所有的字符
sbuf.append(strPattern, handledPosition, strPattern.length());
return sbuf.toString();
}
public static void main(String[] args) {
System.out.println(format("test: {} {}", "a", "b"));
}
}
里面用到的 StringUtils 工具类
package com.demon.common.utils;
import java.util.Collection;
import java.util.Map;
/**
* 字符串工具类
*
* @author Demon-HY
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils {
/**
* 判断对象是否为空,包含 String,Collection,Map
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return false;
}
if (obj instanceof String) {
String str = (String) obj;
return StringUtils.isBlank(str.trim());
}
if (obj instanceof Collection) {
Collection coll = (Collection) obj;
return coll.size() == 0;
}
if (obj instanceof Integer) {
int value = (int) obj;
// 对象为数组
return value == 0;
}
if (obj instanceof Long) {
long value = (long) obj;
// 对象为数组
return value == 0;
}
if (obj instanceof Map) {
// 对象为Map
Map map = (Map) obj;
return map.size() == 0;
}
// 其他类型,只要不为null,即不为empty
return false;
}
/**
* 判断对象是否不为空,包含 String,Collection,Map
*/
public static boolean isNotEmpty(Object obj) {
return !isEmpty(obj);
}
}