当前位置 : 主页 > 编程语言 > java >

解析Properties中的引用属性${name}

来源:互联网 收集:自由互联 发布时间:2021-06-28
解析Properties中的引用属性${name} private void resolve(Properties info) {for (Entry p : info.entrySet()) {String key = (String) p.getKey();String value = (String) p.getValue();boolean modified = false;StringTokenizer tokenizer = new
解析Properties中的引用属性${name}
private void resolve(Properties info) {
		for (Entry
 
   p : info.entrySet()) {
			String key = (String) p.getKey();
			String value = (String) p.getValue();
			boolean modified = false;
			StringTokenizer tokenizer = new StringTokenizer(value, "${}", true);
			int state = -1;
			List
  
    tokens = new LinkedList<>(); while (tokenizer.hasMoreTokens()) { String nextToken = tokenizer.nextToken(); tokens.add(nextToken); switch (state) { case 2: if ("}".equals(nextToken)) { state = -1; String propertyName = tokens.get(tokens.size() - 2); if (!propertyName.equals(key)) { String property = info.getProperty(propertyName); if (property == null) { property = System.getProperty(propertyName); } if (property != null) { modified = true; tokens.remove(tokens.size() - 1); tokens.remove(tokens.size() - 1); tokens.remove(tokens.size() - 1); tokens.remove(tokens.size() - 1); tokens.add(property); } } break; } case 1: if (!"}".equals(nextToken)) { state = 2; break; } case 0: if ("{".equals(nextToken)) { state = 1; break; } case -1: if ("$".equals(nextToken)) { state = 0; break; } default: state = -1; } } if (modified) { StringBuilder buffer = new StringBuilder(); for (String token : tokens) { buffer.append(token); } p.setValue(buffer.toString()); } } }
  
 
上一篇:递归小练习
下一篇:测试短信接口代码
网友评论