List 返回 false,表示它不包含任何项目。但是,在检查列表时似乎?
List is returning false, that it does not contain an item. However, when checking the list it seems to?
我正在开发一个插件,遇到了这个对我来说毫无意义的错误。我有一个包含多个字符串的列表,在检查它是否包含它时,在我的 if 语句中使用 .contains it returns false。
if(e.getPlayer().isOp()){
List<String> warps = Main.getPlugin().getConfig().getStringList("warplist");
String title = e.getLine(0);
String toWarp = ChatColor.stripColor(e.getLine(1).toLowerCase().trim());
if(title.equalsIgnoreCase("warp")){
if(warps.contains(toWarp)){
e.setLine(0, ChatColor.AQUA + "[Warp]");
e.setLine(1, ChatColor.GREEN + toWarp.substring(0, 1).toUpperCase() + toWarp.substring(1).toLowerCase());
e.getPlayer().sendMessage(ChatColor.GOLD + "Warp Sign Created!");
e.getPlayer().sendMessage(ChatColor.ITALIC + "Plugin Created By Sodex234");
@SuppressWarnings("unchecked")
List<Location> allSigns = (List<Location>) Main.getPlugin().getConfig().getList("signs");
allSigns.add(e.getBlock().getLocation());
Main.getPlugin().getConfig().set("signs", allSigns);
Main.getPlugin().saveConfig();
}else{
e.getPlayer().sendMessage(ChatColor.RED + "That Warp Does Not Exist.");
e.getPlayer().sendMessage(ChatColor.RED + "You put: " + toWarp + ". Only these Warps exist: " + warps);
e.getBlock().setType(Material.AIR);
}
}
}
在游戏中我收到消息 "That warp does not exist." - 然后是列表本身。但是,当它向我显示列表时,它清楚地包含该项目。
例如;该列表中有 4 个项目,"test"、"test2"、"test3"、"test4"。我放下一个标志,它知道这是一个扭曲,当它检查名称时,它 returns 错误?但是,名称是 "test" 并且 arraylist 包含它。如您所见,我对其进行了修剪,将聊天颜色条纹化,并将其设为小写(列表中的每一项都是小写)。
已修复。它包含 Minecraft 不支持的非字母数字字符。使用正则表达式来解决这个问题:
toWarp = toWarp.replaceAll("[^A-Za-z0-9 ]", "");
对 toWarp
字符串进行的剥离似乎不足以删除所有字符,在字符串上留下一些不可呈现的字符导致不匹配。
可以做的一件事是通过一些正则表达式去除所有非字母数字字符。
我正在开发一个插件,遇到了这个对我来说毫无意义的错误。我有一个包含多个字符串的列表,在检查它是否包含它时,在我的 if 语句中使用 .contains it returns false。
if(e.getPlayer().isOp()){
List<String> warps = Main.getPlugin().getConfig().getStringList("warplist");
String title = e.getLine(0);
String toWarp = ChatColor.stripColor(e.getLine(1).toLowerCase().trim());
if(title.equalsIgnoreCase("warp")){
if(warps.contains(toWarp)){
e.setLine(0, ChatColor.AQUA + "[Warp]");
e.setLine(1, ChatColor.GREEN + toWarp.substring(0, 1).toUpperCase() + toWarp.substring(1).toLowerCase());
e.getPlayer().sendMessage(ChatColor.GOLD + "Warp Sign Created!");
e.getPlayer().sendMessage(ChatColor.ITALIC + "Plugin Created By Sodex234");
@SuppressWarnings("unchecked")
List<Location> allSigns = (List<Location>) Main.getPlugin().getConfig().getList("signs");
allSigns.add(e.getBlock().getLocation());
Main.getPlugin().getConfig().set("signs", allSigns);
Main.getPlugin().saveConfig();
}else{
e.getPlayer().sendMessage(ChatColor.RED + "That Warp Does Not Exist.");
e.getPlayer().sendMessage(ChatColor.RED + "You put: " + toWarp + ". Only these Warps exist: " + warps);
e.getBlock().setType(Material.AIR);
}
}
}
在游戏中我收到消息 "That warp does not exist." - 然后是列表本身。但是,当它向我显示列表时,它清楚地包含该项目。
例如;该列表中有 4 个项目,"test"、"test2"、"test3"、"test4"。我放下一个标志,它知道这是一个扭曲,当它检查名称时,它 returns 错误?但是,名称是 "test" 并且 arraylist 包含它。如您所见,我对其进行了修剪,将聊天颜色条纹化,并将其设为小写(列表中的每一项都是小写)。
已修复。它包含 Minecraft 不支持的非字母数字字符。使用正则表达式来解决这个问题:
toWarp = toWarp.replaceAll("[^A-Za-z0-9 ]", "");
对 toWarp
字符串进行的剥离似乎不足以删除所有字符,在字符串上留下一些不可呈现的字符导致不匹配。
可以做的一件事是通过一些正则表达式去除所有非字母数字字符。