使用split填充string []数组

时间:2013-05-27 14:22:58

标签: c# arrays

我有以下文字
part1:part2

和以下字符串[]数组
string[] tmp = new string[3];

我如何拆分文本并将其放入数组中,以便数组如下所示:
{"part1", "part2", ""}

我尝试使用.split(':');,但只是重新分配数组,所以它只有 2 元素而不是 3

感谢

5 个答案:

答案 0 :(得分:5)

虽然我肯定有更好的方法来做你想做的事情,但在我看来,最简单的方法是实现精确你所追求的结果是做副本:

var input = "text1:text2";
var temp = new [] {"", "", ""};
var split = input.Split(':');
Array.Copy(split, temp, split.Length <= 3 ? split.Length : 3);

答案 1 :(得分:4)

不是太优雅,但如果它是你想要的,你可以Resize阵列。

string input=@"part1:part2";
var result = input.Split(':');

Array.Resize(ref result, 3);
result[2]=string.Empty;

答案 2 :(得分:2)

如果您在结果数组中确实需要三个元素,则必须将结果从string.Split复制到最终数组,例如通过使用一个简单的循环:

var result = new string[3];
var split = "part1:part2".Split(":");

for(var i = 0; i < result.Length; ++i)
{
    if(i < split.Length)
        result[i] = split[i];
    else
        result[i] = string.Empty;
}

答案 3 :(得分:0)

var str = "part1:part2";
var result = new string[3];
result = (str + "".PadLeft(result.Length - str.Count(c=>c==':') - 1,':')).Split(':');

答案 4 :(得分:0)

    private static string[]  ProcessInput(string input, int length)
    {
        // handle empty or null input
        if (string.IsNullOrEmpty(input))
            return null;

        var items = input.Split(':').ToList();
        // adding empty strings untill given length
        while (items.Count <= length)
        {
            items.Add(string.Empty);
        }
        //even split return more items than length return expected length
        return items.Take(length).ToArray();
    }

将方法称为

var result =  ProcessInput("text1:text2:text4:text5", 3);