2016-04-02 7 views
2

私はプラグインで作業していて、このバグを知りませんでした。私は、複数の文字列を含むリストがあり、それが含まれているかどうかをチェックするときに.containsを使用すると、if文でfalseが返されます。Listが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); 
      } 

     } 

    } 

ゲームでは、「そのワープは存在しません」というメッセージが表示されます。 - それから自分自身をリストアップする。しかし、それが私にリストを示すとき、それは明確に項目を含んでいます。

たとえば、リストには「test」、「test2」、「test3」、「test4」の4つの項目があります。私は記号を置く、それは反りであることを知っている、そしてそれは名前を確認することになると、それは偽を返しますか?しかし、名前は "test"であり、arraylistにはこれが含まれています。ご覧のとおり、私はそれをトリミングし、チャットカラーをストライプして小文字にします(リスト内のすべての項目は小文字です)。

+0

あなたは "+ toWarp +"を置くことができますか?これらのワープだけが存在します: "+ warps"結果? game –

+0

とまったく同じです。比較では大文字と小文字が区別されます。文字列が 'ArrayList'に存在していますか? – user2004685

+0

ここに@ᴘᴀɴᴀʏɪᴏᴛɪs:http://imgur.com/bfIqYsl – Sodex234

答えて

0

ストリッピングtoWarpに行われた文字列は、不一致の原因となる文字列の一部の非レンダリング可能な文字を残して、すべての文字を除去するのに十分ではありません。

1つのことは、英数字以外の文字をいくつかの正規表現で削除することです。

0

修正済み。それは、Minecraftがサポートしていない英数字以外の文字を含んでいた。これを動作するように正規表現を使用:

toWarp = toWarp.replaceAll("[^A-Za-z0-9 ]", ""); 
関連する問題