java - 字符串中的条件 - Java 属性文件

标签 java properties

有一个像下面这样的java属性

样本.属性

query={name} in {address:-}

当前使用StrSubstitutor替换值

 valuesMap.put("name", "Har");
 valuesMap.put("address", "Park Street");
 String queryString= properties.get("query");
 StrSubstitutor sub = new StrSubstitutor(valuesMap);
 String resolvedString = sub.replace(queryString);

resolvedString = Har 位于公园街

我需要的是,如果“地址”不可用,则解析后的字符串应为:

resolvedString = Har而不是resolvedString = Har in

是否可以使用 StrSubstitutor 或通过任何其他方式(例如使用模板引擎)来实现此目的?

不需要任何 Java 代码依赖性,因为查询模式可能会改变。

最佳答案

这可能是一种不失去通用性的方法:

query1={name} in {address}
query2={name}
...
String queryString;
if (valueMap.get("address") == "") {
    queryString= properties.get("query2");
} else {
    queryString= properties.get("query1");
}
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(queryString);

这样,即使将来查询必须更改,您也能够管理两种情况之间的差异。

编辑:如果将来您想在评论中添加新属性,例如: {name} 作为 {address} 中的 {alias}

我认为继续进行的一种方法可能是将“as”和“in”放入查询中: 查询 = {名称} {as} {别名} {in} {地址}

并以正确的方式填充数据库或valueMap(不知道数据来自应用程序中的何处))(因此当没有“别名”和{in}=""时为{as}=""当没有地址时)。这对你来说可行吗?

关于java - 字符串中的条件 - Java 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256001/

相关文章:

java - 如何从 Windows git shell/gnu makefile 调用 javac

powershell - 如何在powershell中的csv中包含所有数组对象的所有属性

inheritance - 你如何访问 Typescript 中基类的属性?

java - 将项目移动到另一台计算机时堆空间不足?

java - 背景淡出并转到另一个页面

java - 使用java从mp4中提取图像

java - Android Studio 中的属性 "Listener"

java - 多次运行 Exception Handling Java 代码时的不同输出

list - LISP 中的属性列表 : are they used in real-life?

javascript - JavaScript 中的属性初始化