-4

我有以下文字
part1:part2

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

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

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

谢谢

4

5 回答 5

5

虽然我确信有更好的方法来做你想做的事情,但在我看来,准确地达到你所追求的结果的最简单方法是做一个副本:

var input = "text1:text2";
var temp = new [] {"", "", ""};
var split = input.Split(':');
Array.Copy(split, temp, split.Length <= 3 ? split.Length : 3);
于 2013-05-27T14:28:58.173 回答
4

不太优雅,但如果这是你想要的,你可以调整数组的大小。

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

Array.Resize(ref result, 3);
result[2]=string.Empty;
于 2013-05-27T14:32:14.690 回答
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;
}
于 2013-05-27T14:28:01.207 回答
0
var str = "part1:part2";
var result = new string[3];
result = (str + "".PadLeft(result.Length - str.Count(c=>c==':') - 1,':')).Split(':');
于 2013-05-27T14:40:56.257 回答
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);
于 2013-05-27T14:51:39.410 回答