【问题标题】:Find whether a string matches another string查找一个字符串是否与另一个字符串匹配
【发布时间】:2013-05-16 12:26:03
【问题描述】:

我想解析一个字符串,看看它是匹配整个字符串还是子字符串。 我试过这个:

String [] array = {"Example","hi","EXAMPLE","example","eXamPLe"};
String word;
...
if ( array[j].toUpperCase().contains(word) ||  array[j].toLowerCase().contains(word)  )
System.out.print(word + " ");

但我的问题是:

当用户输入单词"Example"(区分大小写)并且在我的数组中有"Example" 它不打印它时,它只打印"EXAMPLE""example" 这是因为当我的程序比较两个字符串时它将我的array[j] 字符串转换为大写或小写,因此它不会匹配具有大写和小写的单词,例如单词“Example”。

所以在这种情况下,如果用户输入 "Examp" 我希望它打印:

Example EXAMPLE example eXamPLe

【问题讨论】:

  • 用于...大学运动或其他什么的程序,或者这是一个现实世界的应用程序?
  • 我的真实世界应用程序
  • 定义它是如何成为现实世界的应用程序的。或者至少发布这只是真实代码的抽象只是为了让我们知道问题。

标签: java string string-comparison


【解决方案1】:

如果您只是在寻找完整的匹配项,请使用equalsIgnoreCase

当需要部分匹配时,您可能需要trie 或类似的东西。

【讨论】:

  • 当输入为"Examp"时检查最后一种情况。顺便说一句,不需要太复杂。来自 Apache Commons 的 StringUtils 已经处理了这个问题。
  • @LuiggiMendoza 谢谢,在算法标签中活得太久,对我来说是下意识的反应。
  • 在这种情况下使用尝试就像使用断头台剪头发:)
【解决方案2】:

您可以在调用 contains() 之前将输入字符串和候选字符串都转换为大写。

if ( array[j].toUpperCase().contains( word.toUpperCase() ) ) {
    System.out.print(word + " ");
}

【讨论】:

    【解决方案3】:

    比较word的相同情况。

    if ( array[j].toUpperCase().contains(word.toUpperCase()))
    {
    }
    

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        你正在寻找这个:

        if (array[j].toUpperCase().contains(word.toUpperCase())) {
            System.out.print(array[j]+ " ");
        }
        

        这将打印:

        Example EXAMPLE example eXamPLe
        

        如你所愿!

        【讨论】:

          【解决方案6】:

          将此作为您的作业提交。你肯定会脱颖而出。

          String word = "Exam";
          String [] array = {"Example","hi","EXAMPLE","example","eXamPLe"};
          
          for (String str : array)
            if (str.matches("(?i)"+word+".*"))
              System.out.print(str + " "); // prints: Example EXAMPLE example eXamPLe
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-04
            • 1970-01-01
            • 1970-01-01
            • 2019-05-11
            • 1970-01-01
            • 1970-01-01
            • 2015-03-21
            相关资源
            最近更新 更多