我正在寻找一段可以在字符串中搜索字符串的代码。
String mainSTR = "It is Wednesday";
所以我需要一个代码,如果我搜索将返回 true
"Day"
或"day"
或"DAY"
在 中mainSTR
。
我尝试了类似的方法
mainSTR.contains("")
和
mainSTR.IndexOf("") > -1
不适合我
谢谢 :)
好吧,不能指望 Android 开发人员会提出这样的问题。无论如何,要在字符串中查找任何单词,您可以使用 Java 方法
String mainSTR = "It is Wednesday";
String findThis = "DaY";
if(mainSTR.toLowerCase().contains(findThis.toLowerCase()))
{
System.out.println("true: Day found");
}
else
System.out.println("false: Day not found");
您可以在这里使用的是一种方法 - 规范化功能。toLowerCase(或 toUpperCase)就是这样的助手之一。
mainSTR.toLowerCase().contains("day");
mainSTR.toUpperCase().contains("day".toUpperCase());
String days = "day";//or "Day" or "DAY"
mainSTR.toLowerCase().contains(days.toLowerCase());
Ps:对于这样的比较,你应该更喜欢toLowerCase(Locale.ENGLISH)
或者toUpperCase(Locale.ENGLISH)
哪个给你区域设置不敏感的字符串。
这就是 javaDoc 不得不说的。
注意:此方法对语言环境敏感,如果用于旨在独立解释语言环境的字符串,可能会产生意外结果。示例是编程语言标识符、协议键和 HTML 标记。例如,土耳其语言环境中的 "TITLE".toLowerCase() 返回 "t?tle",其中 '?' 是拉丁小写字母 DOTLESS I 字符。要获得不区分区域设置的字符串的正确结果,请使用 toLowerCase(Locale.ENGLISH)。
请尝试以下操作:
mainSTR.toUpperCase().contains(day.toUpperCase());
干杯!!
如果mainSTR
是一个非常长的字符串,这种方法可能更有效:
String mainSTR = "It is Wednesday";
String toSearch = "Day";
boolean found = Pattern.compile(toSearch, Pattern.CASE_INSENSITIVE).matcher(mainSTR).find();
最后一行相当于
boolean found = Pattern.compile("(?i)" + toSearch).matcher(mainSTR).find();
但请注意,toSearch
如果您这样做,可能不包含正则表达式元字符。
看一下这个
String mainStr="It is Wednesday";
System.out.println(mainStr.toLowerCase().contains("wed".toLowerCase()));