所以我想搜索一个字符串,看看它是否包含我正在寻找的子字符串。这是我写的算法:
//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");
}
这个算法适用于“你好”,但我不知道如何让它为“世界”工作,因为它附有一个问号。
感谢您的帮助!
答案 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)
你不必这样做,它已经实现了:
答案 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