Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串拆分为零个或多个单词的正确方法_Java_String_Split - Fatal编程技术网

Java 将字符串拆分为零个或多个单词的正确方法

Java 将字符串拆分为零个或多个单词的正确方法,java,string,split,Java,String,Split,我有一个字符串,其中包含零个或多个空格分隔的单词,需要将其拆分为一个单词数组。这就是我所做的。但在后处理步骤中,我处理输入字符串不包含单词的情况,这向我建议,我应该使用string.split()以外的其他方法。我应该吗 String[] split_arguments(String arguments) { String[] result = arguments.split("[\t ]+"); if (result.length == 1 && result[

我有一个字符串,其中包含零个或多个空格分隔的单词,需要将其拆分为一个单词数组。这就是我所做的。但在后处理步骤中,我处理输入字符串不包含单词的情况,这向我建议,我应该使用string.split()以外的其他方法。我应该吗

String[] split_arguments(String arguments) {
    String[] result = arguments.split("[\t ]+");
    if (result.length == 1 && result[0].equals("")) {
        result = new String[0];
    }
    return result;
}

您可以使用Apache Commons中的。然后,您可以使用它们提供的拆分方法之一,或者在使用
isNotEmpty()
isNotBlank()
方法检查字符串是否为空之前。

您可以使用来自Apache Commons的。然后,您可以使用它们提供的拆分方法之一,或者在使用
isNotEmpty()
isNotBlank()
方法检查字符串是否为空之前使用apache commons中的
StringUtils.IsBlank
在拆分之前检查字符串。无论哪种方式,您都必须执行检查,但在拆分之前执行检查可能更符合逻辑。

您可以使用apache commons中的
StringUtils.IsBlank
在拆分之前检查字符串。无论哪种方式,您都必须进行检查,但在拆分之前进行检查可能更符合逻辑。

为什么不简单地修剪前导和尾随空格,并在拆分之前检查是否存在这种情况。此外,您可以简单地使用预定义的空白字符类

String[] split_arguments(String arguments) {
    if(arguments == null) {
        return null;
    }
    String trimmedArguments = arguments.trim();
    if(trimmedArguments.length() == 0) {
        return null;
    }

    return trimmedArguments.split("\\s+");
}

为什么不简单地修剪前导空格和尾随空格,并在拆分之前检查是否存在这种情况。此外,您可以简单地使用预定义的空白字符类

String[] split_arguments(String arguments) {
    if(arguments == null) {
        return null;
    }
    String trimmedArguments = arguments.trim();
    if(trimmedArguments.length() == 0) {
        return null;
    }

    return trimmedArguments.split("\\s+");
}

我建议使用Commons Lang的strokenizer。它非常简单:

return StrTokenizer(arguments).getTokentArray();

我建议使用Commons Lang的strokenizer。它非常简单:

return StrTokenizer(arguments).getTokentArray();

通过一些小调整,效果更好。但别误会,在这里使用StringUtils是非常合适的。我只是想给出一个没有任何其他依赖关系的答案。很好。我总是忘记这一点。还应该注意的是,在这里重新分配输入参数并不是一个真正的最佳实践。养成这种习惯可能会导致一些奇怪的错误。还应该注意的是,这种技术实际上只将字符集分为空白字符和单词字符。这意味着字母数字和其他符号都将被视为单词字符。实际上,trim()已经完成了,但是是的,这是可行的。我本来希望找到一个更适合我“开箱即用”需求的拆分器,但我想,拆分前的检查在美观和性能方面都比我的后处理要好。只需稍加调整就更好了。但别误会,在这里使用StringUtils是非常合适的。我只是想给出一个没有任何其他依赖关系的答案。很好。我总是忘记这一点。还应该注意的是,在这里重新分配输入参数并不是一个真正的最佳实践。养成这种习惯可能会导致一些奇怪的错误。还应该注意的是,这种技术实际上只将字符集分为空白字符和单词字符。这意味着字母数字和其他符号都将被视为单词字符。实际上,trim()已经完成了,但是是的,这是可行的。我曾希望找到一个更适合我“开箱即用”需求的拆分器,但我想拆分前的检查在美观和性能方面都比我的后处理更好。