Java通过字符串搜索

时间:2011-11-28 10:01:43

标签: java search

所以我想搜索一个字符串,看看它是否包含我正在寻找的子字符串。这是我写的算法:

    //Declares the String to be searched
    String temp = "Hello World?";

    //A String array is created to store the individual 
    //substrings in temp
    String[] array = temp.split(" ");

    //Iterates through String array and determines if the
    //substring is present
    for(String a : array)
    {
        if(a.equalsIgnoreCase("hello"))
        {
            System.out.println("Found");
            break;
        }
        System.out.println("Not Found");
    }

这个算法适用于“你好”,但我不知道如何让它为“世界”工作,因为它附有一个问号。

感谢您的帮助!

4 个答案:

答案 0 :(得分:6)

看看: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#contains(java.lang.CharSequence)

String.contains();

要获取containsIgnoreCase(),您必须使用searchword和String toLowerCase()。

看看这个答案: How to check if a String contains another String in a case insensitive manner in Java?

return s1.toLowerCase().contains(s2.toLowerCase());

对于以下情况也是如此: 世界大战,因为它会找到世界。如果你不想要这种行为,你必须像@Bart Kiers所说的那样改变你的方法。

答案 1 :(得分:4)

分成以下内容:

"[\\s?.!,]"

匹配任何空格字符,问号,点,感叹号或逗号(如果您愿意,可添加更多字符)。

或者执行temp = temp.toLowerCase()然后temp.contains("world")

答案 2 :(得分:1)

你不必这样做,它已经实现了:

IndexOf and others

答案 3 :(得分:0)

您可能想要使用:

String string = "Hello World?";
boolean  b = string.indexOf("Hello") > 0;         // true

要忽略大小写,必须使用正则表达式。

b = string.matches("(?i).*Hello.*");

忽略大小写的另一个变体是:

// To ignore case
b=string.toLowerCase().indexOf("Hello".toLowerCase()) > 0 // true