0

通常当你拆分一个字符串时,Hi,One,Two你会得到 3 个分隔项。

但是,当您在最后一项上需要额外的逗号时,Hi,One,Two,您将获得 4 项。

我将一个字符串拆分为一个字符串数组,发现数组项的长度不均匀,因为字符串末尾有额外的分隔符:

string test = "[one]\t\t\t[two]\t\t\t";
string[] testArr = test.Split(new char[] { '\t' }, StringSplitOptions.None);

结果是:

[0] = "[one]"
[1] = ""
[2] = "" <- 缺少第 4 项
[3] = "[two]"
[4] = ""
[5] = ""
[6 ] = "" <- 它有第四项

有没有办法不必为除最后一个段之外的所有段添加第四个逗号?

编辑:

当然我可以很容易地使用这段代码:

string test = "[one]\t\t\t\t[two]\t\t\t";
string[] testArr = test.Split(new char[] { '\t' }, StringSplitOptions.None);

并得到理想的结果:

[0] = "[一]"
[1] = ""
[2] = ""
[3] = ""
[4] = "[二]"
[5] = ""
[6] = ""
[7 ] = ""

出于这个问题之外的目的,我希望我可以有相等的尾随分隔符,而不是调整字符串,使最后一个字符串的尾随逗号少一个。

4

3 回答 3

2

有没有办法不必为除最后一个段之外的所有段添加第四个逗号?

String.Split可以正常工作,因此您需要另一个逗号来为字符串生成额外的索引。你有两个选择

  1. 把逗号放在你前面Split
  2. 在你之后添加一个空元素Split

我希望您在问题中没有包含更多内容。

例如,您是否加入[one],,,[two],,,?如果你是,那么你想用逗号分隔符加入它们,渲染[one],,,,[two],,,(注意额外的逗号)。尝试更早地插入逗号。

最大的问题是你为什么关心在你的数组中携带空字符串?使用列表,如果需要,插入额外的字符串。当您真正需要它们时,只需将字符串添加到列表中,而不是携带空的。或者使用对象而不是字符串集合。

于 2012-09-10T04:50:41.377 回答
1

我不想做这个代码,我不能在最后去掉逗号:

使用string.TrimEnd删除尾随逗号,然后根据逗号拆分字符串。

string test = "[one],,,,[two],,,";
test = test.TrimEnd(',');
string[] testArr = test.Split(new char[] { ',' }, StringSplitOptions.None);

或者在一个声明中:

    string[] testArr2 = "[one],,,,[two],,,"
                               .TrimEnd(',')
                               .Split(new char[] { ',' }, StringSplitOptions.None);

根据您编辑的问题,您当前的代码应该为您提供您正在寻找的结果。看下面的截图

在此处输入图像描述

于 2012-09-10T04:35:21.087 回答
0
string test = "[one]\t\t\t[two]\t\t\t";
string[] arrUnEven = test.Split(new char[] { '\t' }, StringSplitOptions.None);

test = test.TrimEnd(new char[] { '\t' });
test = test + new String( '\t',2);
string[] arrEven = test.Split(new char[] { '\t' }, StringSplitOptions.None);
于 2012-09-10T05:42:31.490 回答