gpt4 book ai didi

Java字符串分割删除空值

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:46 24 4
gpt4 key购买 nike

我正在尝试使用分隔符拆分值。但我发现了令人惊讶的结果

String data = "5|6|7||8|9||";
String[] split = data.split("\\|");
System.out.println(split.length);

我期望得到 8 个值。 [5,6,7,空,8,9,空,空]但我只得到 6 个值。

任何想法以及如何解决。无论 EMPTY 值出现在任何地方,它都应该在数组中。

最佳答案

split(delimiter) 默认情况下会从结果数组中删除尾随的空字符串。要关闭此机制,我们需要使用 split(delimiter, limit) 的重载版本,并将 limit 设置为负值,例如

String[] split = data.split("\\|", -1);

更多细节:
split(regex) 内部返回 split(regex, 0) 的结果,并在 documentation 中这个方法你可以找到(强调我的)

The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array.

If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter.

If n is non-positive then the pattern will be applied as many times as possible and the array can have any length.

If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.

异常:

值得一提的是,仅当此类空字符串是由拆分机制创建时,删除尾随空字符串才有意义。因此,对于 "".split(anything) 因为我们无法进一步拆分 "",所以我们将得到结果 [""] 数组。
发生这种情况是因为这里没有发生拆分,因此 "" 尽管为空且尾随表示原始字符串,而不是通过拆分过程创建的空字符串。

关于Java字符串分割删除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com