将字符串拆分为特定的数组位置c#

时间:2014-06-11 14:02:06

标签: c# arrays string split

我有一个独特的情况,我需要创建在零位置为空的字符串数组,然后为剩余位置创建一个拆分字符串。例如,我想输入以下字符串:

"this/\is/\a/\test/\string"

输出以下结果

array[0] = null;
array[1] = "this";
array[2] = "is";
array[3] = "a";
array[4] = "test";
array[5] = "string";

我知道我可以通过多行代码以笨重的方式完成此任务,但我正在寻找一种优雅的方法将字符串拆分到特定的数组位置,或者只是在它之前插入null。位置0的空字符串也可以接受但不理想。有没有一个很好的方法来实现这一目标?数组位置的数量会有所不同,因为输入字符串将包含不同数量的参数。

4 个答案:

答案 0 :(得分:9)

将分隔符添加到字符串中,然后在拆分后将第一个元素设置为null:

string data = @"this/\is/\a/\test/\string";
string[] result = (@"/\" + data).Split(new[] {@"/\"}, StringSplitOptions.None);
result[0] = null;

答案 1 :(得分:2)

我想你可以预先添加一个" / \"到你要分裂的字符串...

(这会给你一个空字符串而不是null,你说这是好的但不理想。如果你想让第一个条目为null,你可以在事后做到。)

答案 2 :(得分:1)

如果你需要多次这样做,并且希望代码看起来干净 - 或者你想要一个可变数量的前置空值,你总是可以编写自己的扩展方法:

public static class Extensions
{
    public static string[] Split(this string input, string delimiter, int prependNullCount)
    {
        var defaultSplit = input.Split(new string[] { delimiter }, StringSplitOptions.None);

        string[] result = new string[defaultSplit.Length + prependNullCount];

        defaultSplit.CopyTo(result, prependNullCount);

        return result;
    }
}

然后你将使用方法:

string input = @"this/\is/\a/\test/\string";
string[] result = input.Split(@"/\", 1);

答案 3 :(得分:0)

你可以在第一个索引处添加/ \并按" / \分割 简单的代码:

string input = @"this/\is/\a/\test/\string";
string[] result = (@"/\" + input ).Split(new[] {@"/\"}, StringSplitOptions.None);