只需使用StringSplitOptions.RemoveEmptyEntries
string.Join(new string(ClientAPI.COLUMN_DELIMITER.ToCharArray()), (new string[] { "1", "2" }))
.Split(ClientAPI.COLUMN_DELIMITER.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
编辑
无法返回原始空字符串。因为,你不知道哪一个是原创的。也许你可以在用“pattern”分割它之前替换空字符串,然后在恢复它们时用空字符串替换它们。
string pattern = "emptystringpattern";
string seperator = "||";
string[] input = new string[] { string.Empty,"1" };
for (int i = 0; i < input.Length; i++)
{
if (input[i] == string.Empty)
{
input[i] = pattern;
}
}
string joinedInput = string.Join(seperator, input);
var splits = joinedInput.Split(seperator.ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < splits.Length; i++)
{
if (splits[i] == pattern)
{
splits[i] = string.Empty;
}
}
此外,pattern不应包含分隔符。
另一个选择是你可以在拆分之前得到空字符串的数量,在拆分过程之后,你可以根据计数再次添加数组。