java - Java 简化一个函数
问题描述
我编写了一个函数来检查字符串是否包含某些单词,但对代码的外观不满意
所以目前我有
private String url = "validator=http://url.com;useraccount=sf4cdamloci;licence=39I8934U401;addedon=343443334;serial=7QW0-5TU8-YN9P-G4FZ;limit=123;days=10"
private String musthave ="validator,useraccount,licence,addedon,serial,limit,days"
所以我想检查 url 是否包含字符串中必须包含的单词。例如 url 必须有验证器、用户帐户、许可证......
所以我尝试了以下
Boolean has_validator = false;
Boolean has_licence = false;
.....//others with has_ prefix
String[] split_url = url.split(";")
for(String key_item : split_url){
String[] splitteditem = key_item.split("=");
if (splitteditem[0].equalsIgnoreCase("validator")){
has_validator = true;
}
if (splitteditem[0].equalsIgnoreCase("useraccount")){
has_useraccount = true;
}
....others as well
}
然后稍后我可以轻松检查
if(has_useraccount && has_...)
上述解决方案有效,但它不可扩展,因为每当我包含一个新的必须要编辑我的函数时。
有没有更好的方法来实现这一点。我还是java新手。我已经检查了正则表达式,但我仍然可以弄清楚如何实现这一点。
我该如何进行
解决方案
不要使用字符串来表示一组字符串。使用...一组字符串:Set<String>
. 或者至少是一个字符串数组。
然后只需使用一个循环。如果集合中的任何单词不包含在文本中,您可以立即返回 false。如果你从未在循环中返回 false,那么所有单词都包含在文本中,你可以返回 true。
伪代码:
for each word in the set
if the word is not in the text, return false
end for
return true
推荐阅读
- php - Wordpress:PHP 警告:sprintf():参数太少
- reactjs - 更改 Material UI 的自动完成组件时如何获取特定值
- python - Python docx - 一行中的多种颜色
- azure - IFeatureManager.IsEnabledAsync() 总是返回相同的(缓存的)值
- javascript - 在 ASP.net 中启动回发之前等待一个承诺
- templates - Rcpp 中的模板
- powerbi - 在 power point 中下载 Powerbi 报告
- xslt - 需要根据父子主题更改页脚值
- php - 将搜索图标放在移动菜单下
- java - Java中同时多个用户登录句柄