0

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

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
4

6 回答 6

5

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

if ( array[j].toUpperCase().contains( word.toUpperCase() ) ) {
    System.out.print(word + " ");
}
于 2013-05-21T16:38:46.550 回答
3

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

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

于 2013-05-21T16:34:45.507 回答
1

比较相同的情况word

if ( array[j].toUpperCase().contains(word.toUpperCase()))
{
}
于 2013-05-21T16:41:13.880 回答
1

你正在寻找这个:

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

这将打印:

Example EXAMPLE example eXamPLe

如你所愿!

于 2013-05-21T16:47:38.883 回答
0

好吧,我认为使用 .equalsIgnoreCase 的其他人可能也对 Matcher(Java 正则表达式)感兴趣。链接不言自明:http ://www.vogella.com/articles/JavaRegularExpressions/article.html http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher。 html Pattern/Matcher group() 在 Java 中获取子字符串? 字符串包含 - 忽略大小写

于 2013-05-21T16:44:06.260 回答
0

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

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
于 2013-05-21T17:12:49.420 回答