我想解析一个字符串,以查看它是否与整个字符串或子字符串匹配。 我试过这个:
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
答案 0 :(得分:5)
在调用contains()之前,您可以将输入字符串和候选字符转换为大写。
if ( array[j].toUpperCase().contains( word.toUpperCase() ) ) {
System.out.print(word + " ");
}
答案 1 :(得分:3)
如果您只是在寻找完整匹配项,请使用equalsIgnoreCase
。
当需要部分匹配时,您可能需要trie或类似的东西。
答案 2 :(得分:1)
与word
的相同案例相比较。
if ( array[j].toUpperCase().contains(word.toUpperCase()))
{
}
答案 3 :(得分:1)
您正在寻找:
if (array[j].toUpperCase().contains(word.toUpperCase())) {
System.out.print(array[j]+ " ");
}
这将打印:
Example EXAMPLE example eXamPLe
如你所愿!
答案 4 :(得分:0)
好吧,我认为使用.equalsIgnoreCase你也可能对Matcher(Java Regex)感兴趣。这些链接是自我解释的:http://www.vogella.com/articles/JavaRegularExpressions/article.html http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html Pattern/Matcher group() to obtain substring in Java? String contains - ignore case
答案 5 :(得分: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