Explorar el Código

优化占位符

Caratacus hace 8 años
padre
commit
0316906332

+ 226 - 211
mybatis-plus/src/main/java/com/baomidou/mybatisplus/toolkit/StringUtils.java

@@ -15,7 +15,6 @@
  */
 package com.baomidou.mybatisplus.toolkit;
 
-import java.text.MessageFormat;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.regex.Matcher;
@@ -31,229 +30,245 @@ import java.util.regex.Pattern;
  */
 public class StringUtils {
 
-    /**
-     * 下划线字符
-     */
-    public static final char UNDERLINE = '_';
+	/**
+	 * 下划线字符
+	 */
+	public static final char UNDERLINE = '_';
 
-    /**
-     * 空字符串
-     */
-    public static final String EMPTY_STRING = "";
+	/**
+	 * 空字符串
+	 */
+	public static final String EMPTY_STRING = "";
+	/**
+	 * 占位符
+	 */
+	public static final String PLACE_HOLDER = "{%s}";
 
-    /**
-     * <p>
-     * 判断字符串是否为空
-     * </p>
-     *
-     * @param str 需要判断字符串
-     * @return 判断结果
-     */
-    public static boolean isEmpty(String str) {
-        return str == null || EMPTY_STRING.equals(str.trim());
-    }
+	/**
+	 * <p>
+	 * 判断字符串是否为空
+	 * </p>
+	 *
+	 * @param str
+	 *            需要判断字符串
+	 * @return 判断结果
+	 */
+	public static boolean isEmpty(String str) {
+		return str == null || EMPTY_STRING.equals(str.trim());
+	}
 
-    /**
-     * <p>
-     * 判断字符串是否不为空
-     * </p>
-     *
-     * @param str 需要判断字符串
-     * @return 判断结果
-     */
-    public static boolean isNotEmpty(String str) {
-        return !isEmpty(str);
-    }
+	/**
+	 * <p>
+	 * 判断字符串是否不为空
+	 * </p>
+	 *
+	 * @param str
+	 *            需要判断字符串
+	 * @return 判断结果
+	 */
+	public static boolean isNotEmpty(String str) {
+		return !isEmpty(str);
+	}
 
-    /**
-     * <p>
-     * 字符串驼峰转下划线格式
-     * </p>
-     *
-     * @param param 需要转换的字符串
-     * @return 转换好的字符串
-     */
-    public static String camelToUnderline(String param) {
-        if (isEmpty(param)) {
-            return EMPTY_STRING;
-        }
-        int len = param.length();
-        StringBuilder sb = new StringBuilder(len);
-        for (int i = 0; i < len; i++) {
-            char c = param.charAt(i);
-            if (Character.isUpperCase(c) && i > 0) {
-                sb.append(UNDERLINE);
-            }
-            sb.append(Character.toLowerCase(c));
-        }
-        return sb.toString();
-    }
+	/**
+	 * <p>
+	 * 字符串驼峰转下划线格式
+	 * </p>
+	 *
+	 * @param param
+	 *            需要转换的字符串
+	 * @return 转换好的字符串
+	 */
+	public static String camelToUnderline(String param) {
+		if (isEmpty(param)) {
+			return EMPTY_STRING;
+		}
+		int len = param.length();
+		StringBuilder sb = new StringBuilder(len);
+		for (int i = 0; i < len; i++) {
+			char c = param.charAt(i);
+			if (Character.isUpperCase(c) && i > 0) {
+				sb.append(UNDERLINE);
+			}
+			sb.append(Character.toLowerCase(c));
+		}
+		return sb.toString();
+	}
 
-    /**
-     * <p>
-     * 字符串下划线转驼峰格式
-     * </p>
-     *
-     * @param param 需要转换的字符串
-     * @return 转换好的字符串
-     */
-    public static String underlineToCamel(String param) {
-        if (isEmpty(param)) {
-            return EMPTY_STRING;
-        }
-        int len = param.length();
-        StringBuilder sb = new StringBuilder(len);
-        for (int i = 0; i < len; i++) {
-            char c = param.charAt(i);
-            if (c == UNDERLINE) {
-                if (++i < len) {
-                    sb.append(Character.toUpperCase(param.charAt(i)));
-                }
-            } else {
-                sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
+	/**
+	 * <p>
+	 * 字符串下划线转驼峰格式
+	 * </p>
+	 *
+	 * @param param
+	 *            需要转换的字符串
+	 * @return 转换好的字符串
+	 */
+	public static String underlineToCamel(String param) {
+		if (isEmpty(param)) {
+			return EMPTY_STRING;
+		}
+		int len = param.length();
+		StringBuilder sb = new StringBuilder(len);
+		for (int i = 0; i < len; i++) {
+			char c = param.charAt(i);
+			if (c == UNDERLINE) {
+				if (++i < len) {
+					sb.append(Character.toUpperCase(param.charAt(i)));
+				}
+			} else {
+				sb.append(c);
+			}
+		}
+		return sb.toString();
+	}
 
-    /**
-     * <p>
-     * 判断字符串是否为纯大写字母
-     * </p>
-     *
-     * @param str 要匹配的字符串
-     * @return
-     */
-    public static boolean isUpperCase(String str) {
-        return match("^[A-Z]+$", str);
-    }
+	/**
+	 * <p>
+	 * 判断字符串是否为纯大写字母
+	 * </p>
+	 *
+	 * @param str
+	 *            要匹配的字符串
+	 * @return
+	 */
+	public static boolean isUpperCase(String str) {
+		return match("^[A-Z]+$", str);
+	}
 
-    /**
-     * <p>
-     * 正则表达式匹配
-     * </p>
-     *
-     * @param regex 正则表达式字符串
-     * @param str   要匹配的字符串
-     * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
-     */
-    public static boolean match(String regex, String str) {
-        Pattern pattern = Pattern.compile(regex);
-        Matcher matcher = pattern.matcher(str);
-        return matcher.matches();
-    }
+	/**
+	 * <p>
+	 * 正则表达式匹配
+	 * </p>
+	 *
+	 * @param regex
+	 *            正则表达式字符串
+	 * @param str
+	 *            要匹配的字符串
+	 * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
+	 */
+	public static boolean match(String regex, String str) {
+		Pattern pattern = Pattern.compile(regex);
+		Matcher matcher = pattern.matcher(str);
+		return matcher.matches();
+	}
 
-    /**
-     * <p>
-     * SQL 参数填充
-     * </p>
-     *
-     * @param content 填充内容
-     * @param args    填充参数
-     * @return
-     */
-    public static String sqlArgsFill(String content, Object... args) {
-        if (null == content) {
-            return null;
-        }
-        if (args != null) {
-            int length = args.length;
-            if (length >= 1) {
-                for (int i = 0; i < length; i++) {
-                    if (args[i] instanceof Collection) {
-                        args[i] = StringUtils.quotaMarkList((Collection<?>) args[i]);
-                    } else {
-                        args[i] = StringUtils.quotaMark(args[i]);
-                    }
-                }
-                content = MessageFormat.format(content, args);
-            }
-        }
-        return content;
-    }
+	/**
+	 * <p>
+	 * SQL 参数填充
+	 * </p>
+	 *
+	 * @param content
+	 *            填充内容
+	 * @param args
+	 *            填充参数
+	 * @return
+	 */
+	public static String sqlArgsFill(String content, Object... args) {
+		if (null == content) {
+			return null;
+		}
+		if (args != null) {
+			int length = args.length;
+			if (length >= 1) {
+				for (int i = 0; i < length; i++) {
+					String repStr;
+					if (args[i] instanceof Collection) {
+						repStr = StringUtils.quotaMarkList((Collection<?>) args[i]);
+					} else {
+						repStr = StringUtils.quotaMark(args[i]);
+					}
+					content = content.replace(String.format(PLACE_HOLDER, i), repStr);
+				}
+			}
+		}
+		return content;
+	}
 
-    /**
-     * <p>
-     * 使用单引号包含字符串
-     * </p>
-     *
-     * @param obj 原字符串
-     * @return 单引号包含的原字符串
-     */
-    public static String quotaMark(Object obj) {
-        String srcStr = String.valueOf(obj);
-        if (obj instanceof String) {
-            // fix #79
-            return StringEscape.escapeString(srcStr);
-        }
-        return srcStr;
-    }
+	/**
+	 * <p>
+	 * 使用单引号包含字符串
+	 * </p>
+	 *
+	 * @param obj
+	 *            原字符串
+	 * @return 单引号包含的原字符串
+	 */
+	public static String quotaMark(Object obj) {
+		String srcStr = String.valueOf(obj);
+		if (obj instanceof String) {
+			// fix #79
+			return StringEscape.escapeString(srcStr);
+		}
+		return srcStr;
+	}
 
-    /**
-     * <p>
-     * 使用单引号包含字符串
-     * </p>
-     *
-     * @param coll 集合
-     * @return 单引号包含的原字符串的集合形式
-     */
-    public static String quotaMarkList(Collection<?> coll) {
-        StringBuilder sqlBuild = new StringBuilder();
-        sqlBuild.append("(");
-        int _size = coll.size();
-        int i = 0;
-        Iterator<?> iterator = coll.iterator();
-        while (iterator.hasNext()) {
-            String tempVal = StringUtils.quotaMark(iterator.next());
-            if (i + 1 == _size) {
-                sqlBuild.append(tempVal);
-            } else {
-                sqlBuild.append(tempVal);
-                sqlBuild.append(",");
-            }
-            i++;
-        }
-        sqlBuild.append(")");
-        return sqlBuild.toString();
-    }
+	/**
+	 * <p>
+	 * 使用单引号包含字符串
+	 * </p>
+	 *
+	 * @param coll
+	 *            集合
+	 * @return 单引号包含的原字符串的集合形式
+	 */
+	public static String quotaMarkList(Collection<?> coll) {
+		StringBuilder sqlBuild = new StringBuilder();
+		sqlBuild.append("(");
+		int _size = coll.size();
+		int i = 0;
+		Iterator<?> iterator = coll.iterator();
+		while (iterator.hasNext()) {
+			String tempVal = StringUtils.quotaMark(iterator.next());
+			if (i + 1 == _size) {
+				sqlBuild.append(tempVal);
+			} else {
+				sqlBuild.append(tempVal);
+				sqlBuild.append(",");
+			}
+			i++;
+		}
+		sqlBuild.append(")");
+		return sqlBuild.toString();
+	}
 
-    /**
-     * <p>
-     * 拼接字符串第二个字符串第一个字母大写
-     *
-     * @param concatStr
-     * @param str
-     * @return
-     */
-    public static String concatCapitalize(String concatStr, final String str) {
-        if (isEmpty(concatStr)) {
-            concatStr = EMPTY_STRING;
-        }
-        int strLen;
-        if (str == null || (strLen = str.length()) == 0) {
-            return str;
-        }
+	/**
+	 * <p>
+	 * 拼接字符串第二个字符串第一个字母大写
+	 *
+	 * @param concatStr
+	 * @param str
+	 * @return
+	 */
+	public static String concatCapitalize(String concatStr, final String str) {
+		if (isEmpty(concatStr)) {
+			concatStr = EMPTY_STRING;
+		}
+		int strLen;
+		if (str == null || (strLen = str.length()) == 0) {
+			return str;
+		}
 
-        final char firstChar = str.charAt(0);
-        if (Character.isTitleCase(firstChar)) {
-            // already capitalized
-            return str;
-        }
+		final char firstChar = str.charAt(0);
+		if (Character.isTitleCase(firstChar)) {
+			// already capitalized
+			return str;
+		}
 
-        return new StringBuilder(strLen).append(concatStr).append(Character.toTitleCase(firstChar)).append(str.substring(1))
-                .toString();
-    }
+		return new StringBuilder(strLen).append(concatStr).append(Character.toTitleCase(firstChar)).append(str.substring(1))
+				.toString();
+	}
 
-    /**
-     * <p>
-     * 字符串第一个字母大写
-     * </p>
-     *
-     * @param str
-     * @return
-     */
-    public static String capitalize(final String str) {
-        return concatCapitalize(null, str);
-    }
+	/**
+	 * <p>
+	 * 字符串第一个字母大写
+	 * </p>
+	 *
+	 * @param str
+	 * @return
+	 */
+	public static String capitalize(final String str) {
+		return concatCapitalize(null, str);
+	}
 
 }