用于检查 Java 中的变量名以消除许多 IF-ELSE 块的正则表达式
Posted
技术标签:
【中文标题】用于检查 Java 中的变量名以消除许多 IF-ELSE 块的正则表达式【英文标题】:Regex for Checking Variable-Name in Java to eliminate many IF-ELSE Blocks 【发布时间】:2020-03-20 20:48:18 【问题描述】:enum MYOPTIONS
OPTION1,OPTION2,OPTION3 .....OPTION100
class test
JSONObject obj = new JSONObject(jsonString);
public void checkAndAddEnumToList()
if(listA.contain(MYOPTIONS.OPTION1.toString()))
map.add(MYOPTIONS.OPTION1.toString(),obj.getJSONArray(MYOPTIONS.OPTION1.toString()));
else if(listA.contain(MYOPTIONS.OPTION2.toString()))
map.add(MYOPTIONS.OPTION2.toString(),obj.getJSONArray(MYOPTIONS.OPTION2.toString()));
else if(listA.contain(MYOPTIONS.OPTION3.toString()))
map.add(MYOPTIONS.OPTION3.toString(),obj.getJSONArray(MYOPTIONS.OPTION3.toString()));
我有 OPTION1 到 OPTION100,无论如何要避免 If-Else 并使用带循环的 REGEX? 以上只是一个示例。我希望用正则表达式替换 IF-ELSE
【问题讨论】:
for
选项 1 到 100?
是的。我不想要 100 个 IF-ELSE 块如果基于 OPTION1-100 和 setValue 的条件也相同 OPTION1-100
似乎拥有一个选项的 ArrayList 并遍历它会容易得多,并将列表 A 中的“找到”元素添加到列表 B
你应该迭代MYOPTIONS.values()
。虽然实际迭代listA
可能会更有效,使用MYOPTIONS.valueOf()
解析每个值,如果解析成功则添加它。
A for loop to iterate over an enum in Java 的可能重复项。
【参考方案1】:
对于枚举,您可以使用 valueOf()
,在 Java 8+ 中使用流(或遍历列表)。
public List<MYOPTIONS> checkAndAddEnumToList(List<String> listA)
List<Enums.ProfileVisibility> listB = new ArrayList<>();
listA.stream().forEach(i -> listB.add(Enums.ProfileVisibility.valueOf(i)));
return listB;
【讨论】:
以上是关于用于检查 Java 中的变量名以消除许多 IF-ELSE 块的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章