gpt4 book ai didi

java字符串拆分(字符串,整数)

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:52 24 4
gpt4 key购买 nike

查看了 split (String, int) 的 API 文档后,我对这两种方法感到很困惑。 ,仍然不确定什么时候会出现空白。

例如

String s="boo:and:foo"
s.split("o", -2);
//the result, according to doc is { "b", "", ":and:f", "", "" }
//why there is only one "" string in the front, while two "" in the back?

经过一些测试后我的想法是只要有连续的匹配,在这种情况下 oo,最后一个尾随的 ""会有一个额外的 "" 是因为字符串结尾前的匹配+连续匹配,导致两个(字符串开头的匹配也会导致前导“”)

需要一些确认。

最佳答案

首先,让我们从检查正常拆分操作的逻辑结果开始。让我们以 one:two:three:four 为例。如果按 : 拆分,您会期望获得以下结果。

one
two
three
four

让我们在 String 的末尾添加另一个分隔符。现在它看起来像 one:two:three:four:。如果我们现在将其拆分,我们将得到相同的结果。这是由于 split(String) 方法定义,它省略了尾随的空字符串。如果您将更多分隔符添加到字符串 one:two:three:four::::: 的末尾,也会发生同样的情况。使用 split(String) 的结果将再次相同,因为与前面的示例一样,它会排除尾随的空字符串元素。

如果你想包含这些元素,那么你可以使用 split(String,int) 函数,如果你提供一个负的 int,它会包含空尾随字符串。来自参数 limit 的方法文档,它是 int

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.

通过将其作为负数传递,对于字符串 one:two:three:four::,我们将得到以下结果:

one
two
three
four
""
""

现在您的示例也发生了同样的情况。它确实注意到,单词 foo 会在数组末尾创建两个空的尾随 String 元素,并将包含它们。

关于java字符串拆分(字符串,整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865841/

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