如果在命令后找到文本,则Java拆分

时间:2016-09-17 19:57:03

标签: java if-statement split

我正在尝试从几小时后如何做到这一点,所以我会在这里寻求帮助。 我运行一个IRC机器人并尝试做某事,当用户向机器人发送命令时,它需要查看是否可以从用户那里吐出输入。

示例:!help lag 2 3; 该代码适用于此,但如果用户只发送

示例:!help; 它崩溃了Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

以下是该部分的代码:

String command = str.split("!")[1];
command = command.split("\\s+", 2)[0];
String username_fix = java.net.URLEncoder.encode(username, "UTF-8").replace("_", "%20");
String combined = "";
String fix = str.split(command)[1];
fix = fix.trim();
String arrayString[] = fix.split("\\s+");
for (int j = 0; j < arrayString.length; j++) {
combined += arrayString[j] + "|";
}

错误来自String fix = str.split(command)[1];

这完成了msrd0完成的工作if (str.split(command).length > 1)

但是罗夏查的答案是一样的,所以我会将其标记为已解决。非常感谢!

2 个答案:

答案 0 :(得分:3)

不要尝试自动获取str.split(command)数组的第二个元素。先拆分,然后检查,如果有第二个元素。

//no
String fix = str.split(command)[1];

//yes
String[] something = str.split(command);

if(something.length > 1) {
    //rest of your logic
}

答案 1 :(得分:0)

String fix = str.split(command)[0];

更改此行代码可使其正常工作。您试图访问数组中的位置(在您的情况下为[1]),该位置超出最大长度([0])。