浏览代码

add assgin

Looly 6 年之前
父节点
当前提交
7174b49906
共有 2 个文件被更改,包括 19 次插入8 次删除
  1. 1 0
      CHANGELOG.md
  2. 18 8
      hutool-setting/src/main/java/cn/hutool/setting/SettingLoader.java

+ 1 - 0
CHANGELOG.md

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

+ 18 - 8
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 COMMENT_FLAG_PRE = '#';
 	/** 赋值分隔符(用于分隔键值对) */
 	/** 赋值分隔符(用于分隔键值对) */
-	private final static char ASSIGN_FLAG = '=';
+	private char assignFlag = '=';
 	/** 变量名称的正则 */
 	/** 变量名称的正则 */
-	private String reg_var = "\\$\\{(.*?)\\}";
+	private String varRegex = "\\$\\{(.*?)\\}";
 
 
 	/** 本设置对象的字符集 */
 	/** 本设置对象的字符集 */
 	private Charset charset;
 	private Charset charset;
@@ -124,7 +124,7 @@ public class SettingLoader {
 					continue;
 					continue;
 				}
 				}
 
 
-				final String[] keyValue = StrUtil.splitToArray(line, ASSIGN_FLAG, 2);
+				final String[] keyValue = StrUtil.splitToArray(line, this.assignFlag, 2);
 				// 跳过不符合键值规范的行
 				// 跳过不符合键值规范的行
 				if (keyValue.length < 2) {
 				if (keyValue.length < 2) {
 					continue;
 					continue;
@@ -150,7 +150,17 @@ public class SettingLoader {
 	 * @param regex 正则
 	 * @param regex 正则
 	 */
 	 */
 	public void setVarRegex(String 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()) {
 		for (Entry<String, LinkedHashMap<String, String>> groupEntry : this.groupedMap.entrySet()) {
 			writer.println(StrUtil.format("{}{}{}", CharUtil.BRACKET_START, groupEntry.getKey(), CharUtil.BRACKET_END));
 			writer.println(StrUtil.format("{}{}{}", CharUtil.BRACKET_START, groupEntry.getKey(), CharUtil.BRACKET_END));
 			for (Entry<String, String> entry : groupEntry.getValue().entrySet()) {
 			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) {
 	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;
 		String key;
 		for (String var : vars) {
 		for (String var : vars) {
-			key = ReUtil.get(reg_var, var, 1);
+			key = ReUtil.get(varRegex, var, 1);
 			if (StrUtil.isNotBlank(key)) {
 			if (StrUtil.isNotBlank(key)) {
 				// 本分组中查找变量名对应的值
 				// 本分组中查找变量名对应的值
 				String varValue = this.groupedMap.get(group, 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);
 					varValue = System.getProperty(key);
 				}
 				}
 				if (null != varValue) {
 				if (null != varValue) {