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 必须有 validator 、用户帐户、许可证......

所以我尝试了以下方法

 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

关于Java 简化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54856688/

相关文章:

java - 在 Google Glass 上部署玻璃器皿

java - Spring RestTemplate - 在 GET 中传入对象参数

java - Java中如何调用通配符类型的泛型方法?

java - Spring 应用程序上下文为空

java - 在 Clojure 的循环中使用副作用方法改变 Java 对象

java - 可选择的多播套接字(1.7 之前)

java - 使用 Java JDBC 连接到 Google Cloud SQL 数据库的方法

java - JSF 页面中的单词和链接之间的空格被删除

java - 更改 Java 中重写方法的访问修饰符?

java - 在jsp页面中包含外部javascript文件