我在看似简单的事情上遇到了麻烦。如何从命令中获取句子?
如果用户输入:/command,我想用空格减去命令
并按 Enter 键,我需要得到这个:
myString = "我想用空格减去命令来得到这个";
我该怎么做?一个循环?最快、最有效的方法是什么?
谢谢。这是我到目前为止所拥有的:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("command"))
{
if(args.length > 0)
{
sender.sendMessage(ChatColor.RED + "/command <message>");
}
else
{
if (!(sender instanceof Player)) {
sender.sendMessage("This command can only be run by a player.");
}
else
{
Player player = (Player) sender;
// Check to make sure nothing is null or empty
if(args[0].equals(" ") || args[0].equals("") || args[0] == null)
{
// Do command !!
}
else
{
player.sendMessage(ChatColor.RED + "Please enter a <message>");
}
}
}
return true;
}
return false;
}
最佳答案
您可以通过使用 for 循环来获取 /command
之后的所有字符串来轻松完成此操作,所有这些字符串都作为参数进行处理。这是一个例子:
String myString = ""; //we're going to store the arguments here
for(int i = 0; i < args.length; i++){ //loop threw all the arguments
String arg = args[i] + " "; //get the argument, and add a space so that the words get spaced out
myString = myString + arg; //add the argument to myString
}
现在你有了字符串,你可以用它做任何事情,比如将消息发送给命令发送者:
sender.sendMessage(myString);
对上面代码的简短解释是,首先,我们循环抛出所有参数(/command
之后的所有内容,然后,我们在末尾添加一个空格最后,我们将参数放入字符串 myString
...这是一个实现示例:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("command")){
String myString = "";
for(int i = 0; i < args.length(); i++){
String arg = args[i] + " ";
myString = myString + arg;
}
sender.sendMessage(myString); //send the message to the command sender.
}
}
您还可以使用以下命令检查命令是否有参数:
if(args.length != 0){
使用命令的一个例子是,假设玩家输入 /command bar foo
。然后玩家会收到消息 bar foo
。
关于java - 在 Bukkit 中将 args 组合成一个句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309005/