为了账号安全,请及时绑定邮箱和手机立即绑定

Java 简化一个函数

Java 简化一个函数

Helenr 2022-07-06 10:03:10
我编写了一个函数来检查字符串是否包含某些单词,但对代码的外观不满意所以目前我有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_ prefixString[] 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新手。我已经检查了正则表达式,但我仍然可以弄清楚如何实现这一点。
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

不要使用字符串来表示一组字符串。使用...一组字符串: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


查看完整回答
反对 回复 2022-07-06
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

如果你有一个Collection必备的字符串,那么你可以做一些简单的事情,比如:

mustHave.stream().allMatch(url::contains)

我的示例没有进行不区分大小写的检查,但您明白了。


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信