如何从ArrayList <string>中删除括号

时间:2018-02-09 22:48:34

标签: java arraylist minecraft

所以我正在为一个Minecraft服务器制作一个插件,我不得不从一个类到另一个类获取我的命令命令参数。在尝试了多个事情之后,我开始使用一个ArrayList,它在大多数情况下工作但它放了括号 论证。

ArrayList<String> target = Main.target;


   @EventHandler
   public void invClickEvent(InventoryClickEvent e) {

       Inventory inv = e.getInventory();
       Player player = (Player) e.getWhoClicked();

       String name = inv.getName();
       if ( name.equals(ChatColor.RED + "Ban Menu")) {

           e.setCancelled(true);
           int slot = e.getSlot();
           if (slot < 0)
           {
               return;
           }
           if (slot == 0)
           {
                 player.performCommand("kill " + target);
               player.closeInventory();
               return;
           }

这是给我带来麻烦的代码。它从我的主类中提取数据。它是ArrayList从参数中提取文本。

public static ArrayList<String> target = new ArrayList<String>();

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {



        if (sender instanceof Player && args.length == 1)
        {
            Player p = (Player) sender;
            if (args.length > 0) {
                switch (args.length)
                {
                case 1: 
                  Player player = Bukkit.getPlayer(args[0]);
                  if (player == null) {
                    sender.sendMessage("That player is not online");

                  } else if (player.isOnline()) {

                      Menus.openMenu(p);
                      target.add(player.getPlayerListName());

                  }

这就是数组拉动参数的地方。输出类似于player executed command: /kill [HoloPanio],我希望它输出player executed command: /kill HoloPanio

如果有其他方法导入参数请告诉我,如果没有,请告诉我如何解决这个问题。

谢谢!

4 个答案:

答案 0 :(得分:1)

只是扩展了Titus在评论中所说的内容。

尝试使用Rscript -e "x=1;write.csv(x,'H:/this_folder/x.csv')" 作为目标类型,而不是使用Rscript -e "x=1;write.csv(x,'H:/that folder/x.csv')" 。这将允许输出为ArrayList

String

以下内容将作为空player executed command: /kill HoloPanio更新为初始目标。请注意,将为此类的每个用户更新静态变量。这意味着访问此类的任何其他代码将具有相同的目标。并且,访问此类的任何其他代码都可以更改目标。

String target = Main.target;

@EventHandler
public void invClickEvent(InventoryClickEvent e) {

   Inventory inv = e.getInventory();
   Player player = (Player) e.getWhoClicked();

   String name = inv.getName();
   if ( name.equals(ChatColor.RED + "Ban Menu")) {

       e.setCancelled(true);
       int slot = e.getSlot();
       if (slot < 0)
       {
           return;
       }
       if (slot == 0)
       {
           player.performCommand("kill " + target);
           player.closeInventory();
           return;
       }

同样正如Titus所说,这不是最好的解决方案,因为作为一个静态变量,String可能会在你不想要的时候改变(或者当你想要它时最终会变化改变)。但是,这应该解决命令问题。

答案 1 :(得分:0)

这是默认的ArrayList toString。

使用String.join删除括号

String result = String.join("", list);

答案 2 :(得分:-1)

这是因为ArrayList类的toString方法。

扩展ArryList类并覆盖toString

ArrayList<String> list = new ArrayList<String>()
{
    private static final long serialVersionUID = 1L;

    @Override public String toString()
    {
        return super.toString().substring(1,super.toString().length-1) ;
    }
};

答案 3 :(得分:-1)

对于Minecraft角度来说绝对没有任何意义,如果你想要获取元素列表而不必打印集合,你可以用StringJoiner汇总它。

String values = String.join(",", target);
System.out.println(values);