add assgin

This commit is contained in:
Looly 2019-09-09 17:58:43 +08:00
parent d3fff05b95
commit 7174b49906
2 changed files with 19 additions and 8 deletions

View File

@ -16,6 +16,7 @@
* 【dfa】 优化特殊字符构建优化查找改为使用StrBuilder
* 【core】 ZipUtil增加FileFilter参数的重载支持文件过滤issue#I11RTP@Gitee
* 【http】 HttpRequest增加setChunkedStreamingMode方法issue#525@Github
* 【setting】 SettingLoader支持自定义分隔符
### Bug修复
* 【core】 修复NetUtil.getUsableLocalPort问题pr#69@Gitee

View File

@ -34,9 +34,9 @@ public class SettingLoader {
/** 注释符号(当有此符号在行首,表示此行为注释) */
private final static char COMMENT_FLAG_PRE = '#';
/** 赋值分隔符(用于分隔键值对) */
private final static char ASSIGN_FLAG = '=';
private char assignFlag = '=';
/** 变量名称的正则 */
private String reg_var = "\\$\\{(.*?)\\}";
private String varRegex = "\\$\\{(.*?)\\}";
/** 本设置对象的字符集 */
private Charset charset;
@ -124,7 +124,7 @@ public class SettingLoader {
continue;
}
final String[] keyValue = StrUtil.splitToArray(line, ASSIGN_FLAG, 2);
final String[] keyValue = StrUtil.splitToArray(line, this.assignFlag, 2);
// 跳过不符合键值规范的行
if (keyValue.length < 2) {
continue;
@ -150,7 +150,17 @@ public class SettingLoader {
* @param regex 正则
*/
public void setVarRegex(String regex) {
this.reg_var = regex;
this.varRegex = regex;
}
/**
* 赋值分隔符用于分隔键值对
*
* @param regex 正则
* @since 4.6.5
*/
public void setAssignFlag(char assignFlag) {
this.assignFlag = assignFlag;
}
/**
@ -181,7 +191,7 @@ public class SettingLoader {
for (Entry<String, LinkedHashMap<String, String>> groupEntry : this.groupedMap.entrySet()) {
writer.println(StrUtil.format("{}{}{}", CharUtil.BRACKET_START, groupEntry.getKey(), CharUtil.BRACKET_END));
for (Entry<String, String> entry : groupEntry.getValue().entrySet()) {
writer.println(StrUtil.format("{} {} {}", entry.getKey(), ASSIGN_FLAG, entry.getValue()));
writer.println(StrUtil.format("{} {} {}", entry.getKey(), this.assignFlag, entry.getValue()));
}
}
}
@ -196,10 +206,10 @@ public class SettingLoader {
*/
private String replaceVar(String group, String value) {
// 找到所有变量标识
final Set<String> vars = ReUtil.findAll(reg_var, value, 0, new HashSet<String>());
final Set<String> vars = ReUtil.findAll(varRegex, value, 0, new HashSet<String>());
String key;
for (String var : vars) {
key = ReUtil.get(reg_var, var, 1);
key = ReUtil.get(varRegex, var, 1);
if (StrUtil.isNotBlank(key)) {
// 本分组中查找变量名对应的值
String varValue = this.groupedMap.get(group, key);
@ -211,7 +221,7 @@ public class SettingLoader {
}
}
// 系统参数中查找
if(null == varValue) {
if (null == varValue) {
varValue = System.getProperty(key);
}
if (null != varValue) {