有没有办法检查字符串是否包含某些内容而不区分大小写?
例如:(此代码无效,只是为了让您对我的问题有基本的了解)
String text = "I love ponies";
if(text.contains().equalsIgnoreCase("love") {
// do something
}
Run Code Online (Sandbox Code Playgroud)
编辑:--------仍然没有工作
哦,事实证明它不起作用.这就是我正在使用的.(这是游戏的诅咒过滤器)
public void onChat(PlayerChatEvent event) {
Player player = event.getPlayer();
if (event.getMessage().contains("douche".toLowerCase()) || /* More words ... */) {
event.setCancelled(true);
player.sendMessage(ChatColor.GOLD + "[Midnight Blue] " + ChatColor.RED + "Please Don't Swear.");
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于小写但不是大写.
小智 25
return text.toLowerCase().contains(s2.toLowerCase());
Run Code Online (Sandbox Code Playgroud)
或者另一种方式
Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(text).find();
Run Code Online (Sandbox Code Playgroud)
如果区分大小写是您唯一的问题,请将所有内容转换为小写
String text = "I love ponies";
String test = "LOVE";
if(text.toLowerCase().contains(test.toLowerCase()))
{
//your code
}
Run Code Online (Sandbox Code Playgroud)
更新:对于您的代码使用:
event.getMessage().toLowerCase().contains("douche".toLowerCase())
Run Code Online (Sandbox Code Playgroud)
在所有条件下
如果你使用它会更容易StringUtils#containsIgnoreCase从Apache的共享库
如果您无法添加第三方库,您仍然可以使用该代码,因为它是免费使用的.查看在线源代码.
测试:
public class QuestionABCD {
public static boolean containsIgnoreCase(String str, String searchStr) {
if (str == null || searchStr == null) {
return false;
}
int len = searchStr.length();
int max = str.length() - len;
for (int i = 0; i <= max; i++) {
if (str.regionMatches(true, i, searchStr, 0, len)) {
return true;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(containsIgnoreCase("abc", "A"));
System.out.println(containsIgnoreCase("abc", "a"));
System.out.println(containsIgnoreCase("abc", "B"));
System.out.println(containsIgnoreCase("abc", "b"));
System.out.println(containsIgnoreCase("abc", "z"));
System.out.println(containsIgnoreCase("abc", "Z"));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
true
true
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
cho*_*hop -9
你可以像这样检查两次
text.contains(s);
text.contains(s.toLowerCase());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26800 次 |
| 最近记录: |