通常当您拆分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] =“[两个]”
[4] =“”
[5] =“”
[6] =“”< - 它有第4项
除了最后一段之外,是否有必要为所有细分添加逗号?
编辑:
当然,我可以轻松使用此代码:
string test = "[one]\t\t\t\t[two]\t\t\t";
string[] testArr = test.Split(new char[] { '\t' }, StringSplitOptions.None);
获得理想的结果:
[0] =“[one]”
[1] =“”
[2] =“”
[3] =“”
[4] =“[两个]”
[5] =“”
[6] =“”
[7] =“”
为了超出这个问题的目的,我希望我能有相同的尾随分隔符,而不是调整字符串,以便最后一个字符串有一个较少的尾随逗号。
答案 0 :(得分:2)
有没有办法不必为所有段添加第四个逗号 除了最后一个?
String.Split
可以正常工作,所以你需要另一个逗号来为字符串生成额外的索引。你有两个选择
Split
Split
我希望你还没有把这个问题包括在内。
例如,您是加入[one],,,
和[two],,,
吗?如果你那么你想用逗号分隔符加入它们,渲染[one],,,,[two],,,
(注意额外的逗号)。尝试先插入逗号。
最大的问题是为什么你担心在数组中携带空字符串?使用列表,根据需要插入额外的字符串。只需在实际需要时将字符串添加到列表中,而不是携带空。或者使用对象而不是字符串集合。
答案 1 :(得分: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);
根据您编辑过的问题,您当前的代码应该会为您提供所需的结果。请看下面的截图
答案 2 :(得分: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);