我有以下文字
part1:part2
和以下字符串 [] 数组
string[] tmp = new string[3];
如何拆分我的文本并将其放入数组中,使数组如下所示:
{"part1", "part2", ""}
我尝试使用.split(':');
但是只是重新分配数组,所以它只有2 个元素而不是3
谢谢
虽然我确信有更好的方法来做你想做的事情,但在我看来,准确地达到你所追求的结果的最简单方法是做一个副本:
var input = "text1:text2";
var temp = new [] {"", "", ""};
var split = input.Split(':');
Array.Copy(split, temp, split.Length <= 3 ? split.Length : 3);
不太优雅,但如果这是你想要的,你可以调整数组的大小。
string input=@"part1:part2";
var result = input.Split(':');
Array.Resize(ref result, 3);
result[2]=string.Empty;
如果您确实需要结果数组中的三个元素,则必须将结果从复制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;
}
var str = "part1:part2";
var result = new string[3];
result = (str + "".PadLeft(result.Length - str.Count(c=>c==':') - 1,':')).Split(':');
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);