gpt4 book ai didi

c# - String.Split 返回奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:43 25 4
gpt4 key购买 nike

我注意到,如果我按空格拆分 一个仅包含空格的字符串,它会返回意外的结果。考虑一下:

var spaces = string.Join("",Enumerable.Repeat(" ", 10));
int lenght = spaces.Length; // 10
var result = spaces.Split(' ');
lenght = result.Length; // 11

我不明白为什么 result.Length 返回 11 空字符串。而我的输入字符串中有 10 空格?我还用一个字母尝试了它,例如 "a" 并且没有任何区别:

var letters = string.Join("",Enumerable.Repeat("a", 10));
int lenght = letters.Length; // 10
var result = letters.Split('a');
lenght = result.Length; // 11

documentation它说:

If two delimiters are adjacent, or a delimiter is found at the beginning or end of this instance, the corresponding array element contains Empty.

所以我明白为什么我得到的是空字符串,但我不明白那个额外的元素是从哪里来的?

文档中有一个例子:

var input = "42..12..19";
var result = input.Split('.');

返回五个结果,其中两个是空字符串。不是三个

那么这是默认和预期的行为,还是错误或其他原因?

最佳答案

不是错误,是完全预期的行为。

这样看:

1-2-3

拆分-。这导致 3 个元素:1,2 和 3。

现在取 --3 并再次在破折号上拆分。还有 3 个元素,前 2 个为空。

分隔符本质上是位于其他两个元素之间的元素。它之间的元素可以为空。因此,如果您有 10 个空格并按空格拆分,那么您将始终有 11 个元素。

您的最后一个示例 "42..12..19" 上拆分。 本质上是:42.EMPTY.12.EMPTY.19 这是 5 个元素。

关于c# - String.Split 返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314815/

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