Java 查找一个字符串是否与另一个字符串匹配

Java 查找一个字符串是否与另一个字符串匹配,java,string,string-comparison,Java,String,String Comparison,我想解析一个字符串,以查看它是否匹配整个字符串或子字符串。 我试过这个: String [] array = {"Example","hi","EXAMPLE","example","eXamPLe"}; String word; ... if ( array[j].toUpperCase().contains(word) || array[j].toLowerCase().contains(word) ) System.out.print(word + " "); 但我的问题是: 当用户

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

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”
,这是因为当我的程序比较两个字符串时,它会转换我的
数组[j]
将字符串转换为大写或小写,这样它就不会匹配大写和小写的单词,比如“Example”

因此,在这种情况下,如果用户输入
“Examp”
,我希望它打印:

Example EXAMPLE example eXamPLe

如果您只是寻找完全匹配,请使用


当需要部分匹配时,您可能需要a或类似的内容。

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


word
的相同情况进行比较

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

嗯,我认为使用.equalsIgnoreCase的其他人也可能对Matcher(Java正则表达式)感兴趣。这些链接是自我解释的:

您正在寻找:

if (array[j].toUpperCase().contains(word.toUpperCase())) {
    System.out.print(array[j]+ " ");
}
这将打印:

Example EXAMPLE example eXamPLe

如你所愿

将此作为您的作业提交。你肯定会被认为是独一无二的

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

当输入为“Examp”时,检查最后一种情况。顺便说一下,没必要把这件事搞得太复杂。Apache Commons的StringUtils已经解决了这个问题。@LuiggiMendoza谢谢,在算法标签中活得太久了,这对我来说是下意识的反应。在这种情况下使用尝试就像用断头台剪头发:)程序用于。。。大学练习之类的,或者这是一个真实世界的应用程序?meDefine的真实世界应用程序如何是一个真实世界的应用程序。或者至少在文章中说,这只是真实代码的抽象,只是为了让我们知道问题所在。
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