From 7174b499066b45b57308d572d3724398cde55a52 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 9 Sep 2019 17:58:43 +0800 Subject: [PATCH] add assgin --- CHANGELOG.md | 1 + .../java/cn/hutool/setting/SettingLoader.java | 26 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cd927feb..547353b59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/hutool-setting/src/main/java/cn/hutool/setting/SettingLoader.java b/hutool-setting/src/main/java/cn/hutool/setting/SettingLoader.java index 8706baee5..69a2c9aea 100644 --- a/hutool-setting/src/main/java/cn/hutool/setting/SettingLoader.java +++ b/hutool-setting/src/main/java/cn/hutool/setting/SettingLoader.java @@ -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> groupEntry : this.groupedMap.entrySet()) { writer.println(StrUtil.format("{}{}{}", CharUtil.BRACKET_START, groupEntry.getKey(), CharUtil.BRACKET_END)); for (Entry 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 vars = ReUtil.findAll(reg_var, value, 0, new HashSet()); + final Set vars = ReUtil.findAll(varRegex, value, 0, new HashSet()); 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) {