如何在string中使用contains和equalsIgnoreCase

有没有办法检查字符串是否包含某些内容而不区分大小写?

例如:(此代码无效,只是为了让您对我的问题有基本的了解)

String text = "I love ponies"; if(text.contains().equalsIgnoreCase("love") { // do something } 

编辑:——–仍然没有工作

哦,事实certificate它不起作用。 这是我正在使用的。 (这是游戏的诅咒filter)

 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."); } } 

它适用于小写但不是大写。

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

或者另一种方式

 Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(text).find(); 

如果您使用Apache Commons库中的StringUtils#containsIgnoreCase会更容易

如果您无法添加第三方库,您仍然可以使用该代码,因为可以免费使用。 查看在线源代码 。

测试:

 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")); } } 

输出:

 true true true true false false 

如果区分大小写是唯一的问题,请将所有内容转换为小写

 String text = "I love ponies"; String test = "LOVE"; if(text.toLowerCase().contains(test.toLowerCase())) { //your code } 

更新:为您的代码使用:

 event.getMessage().toLowerCase().contains("douche".toLowerCase()) 

在所有条件下

你可以这样检查两次

 text.contains(s); text.contains(s.toLowerCase());