字符串格式化---StrFormatter
生活随笔
收集整理的這篇文章主要介紹了
字符串格式化---StrFormatter
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*** 字符串格式化* * @author Mr.wang*/
public class StrFormatter
{public static final String EMPTY_JSON = "{}";public static final char C_BACKSLASH = '\\';public static final char C_DELIM_START = '{';public static final char C_DELIM_END = '}';/*** 格式化字符串<br>* 此方法只是簡單將占位符 {} 按照順序替換為參數(shù)<br>* 如果想輸出 {} 使用 \\轉(zhuǎn)義 { 即可,如果想輸出 {} 之前的 \ 使用雙轉(zhuǎn)義符 \\\\ 即可<br>* 例:<br>* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>* 轉(zhuǎn)義{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>* 轉(zhuǎn)義\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>* * @param strPattern 字符串模板* @param argArray 參數(shù)列表* @return 結(jié)果*/public static String format(final String strPattern, final Object... argArray){if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)){return strPattern;}final int strPatternLength = strPattern.length();// 初始化定義好的長度以獲得更好的性能StringBuilder sbuf = new StringBuilder(strPatternLength + 50);int handledPosition = 0;int delimIndex;// 占位符所在位置for (int argIndex = 0; argIndex < argArray.length; argIndex++){delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);if (delimIndex == -1){if (handledPosition == 0){return strPattern;}else{ // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回結(jié)果sbuf.append(strPattern, handledPosition, strPatternLength);return sbuf.toString();}}else{if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH){if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH){// 轉(zhuǎn)義符之前還有一個(gè)轉(zhuǎn)義符,占位符依舊有效sbuf.append(strPattern, handledPosition, delimIndex - 1);sbuf.append(Convert.utf8Str(argArray[argIndex]));handledPosition = delimIndex + 2;}else{// 占位符被轉(zhuǎn)義argIndex--;sbuf.append(strPattern, handledPosition, delimIndex - 1);sbuf.append(C_DELIM_START);handledPosition = delimIndex + 1;}}else{// 正常占位符sbuf.append(strPattern, handledPosition, delimIndex);sbuf.append(Convert.utf8Str(argArray[argIndex]));handledPosition = delimIndex + 2;}}}// 加入最后一個(gè)占位符后所有的字符sbuf.append(strPattern, handledPosition, strPattern.length());return sbuf.toString();}
}
總結(jié)
以上是生活随笔為你收集整理的字符串格式化---StrFormatter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串工具类---StringUtils
- 下一篇: 【Linux】【服务器】 CentOS7