【问题标题】:Looking for similar strings in a string array [duplicate]在字符串数组中寻找相似的字符串[重复]
【发布时间】:2021-05-26 18:24:07
【问题描述】:

我有一个字符串数组。例如:

["Tartrazine","Orange GGN", "Riboflavin-5-Phosphate"]

我有一个字符串。例如:

"Riboflvin"

我想在数组中寻找最相似的字符串,如果存在就获取它。 所以我需要这个输出:

"Riboflavin-5-Phosphate"

但是如果数组看起来像这样:

["Tartrazine","Orange GGN", "Quinoline"]

我想要这样的输出:

"No similar strings found"

我尝试使用FuzzyWuzzy library,但它显示了很多误报。

【问题讨论】:

    标签: java arrays string search


    【解决方案1】:

    你可以使用String#contains的方法,如果没有找到完整的字符串,依次减少字符串的长度来搜索:

    String[] arr = {"Tartrazine", "Orange GGN", "Riboflavin-5-Phosphate"};
    String element = "Riboflvin";
    
    boolean found = false;
    for (int i = 0; i < element.length(); i++) {
        // take shorter substring if nothing found at previous step
        String part = element.substring(0, element.length() - i);
        // if any string from array contains this substring
        if (Arrays.stream(arr).anyMatch(str -> str.contains(part))) {
            System.out.println("Found part: " + part);
            // then print these strings one by one
            Arrays.stream(arr).filter(str -> str.contains(part))
                    .forEach(System.out::println);
            found = true;
            break;
        }
    }
    // if nothing found
    if (!found) {
        System.out.println("No similar strings found");
    }
    

    输出:

    Found part: Ribofl
    Riboflavin-5-Phosphate
    

    【讨论】:

      【解决方案2】:

      嗯,这取决于你到底想做什么。

      您可以做几件事,您可以通过直接调用列表list.contains("yourStr") 来检查数组是否包含您正在寻找的String 的完全匹配。您还可以检查每个值以查看它是否包含某个子字符串,如下所示:

      foreach(String s : list) {
          if (s.contains(subStr) {
              return s;
          }
      }
      

      否则,如果您真的想检查相似性,它会变得有点复杂。那么我们就真的要回答这个问题了:“有多相似才足够相似?”。我想这篇文章可以很好地解决这个问题:Similarity String Comparison in Java

      【讨论】:

        猜你喜欢
        • 2011-03-20
        • 2022-10-14
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 2016-03-07
        • 2014-06-01
        • 1970-01-01
        • 2015-07-07
        相关资源
        最近更新 更多