我有以下文字
part1:part2
和以下字符串[]数组
string[] tmp = new string[3];
我如何拆分文本并将其放入数组中,以便数组如下所示:
{"part1", "part2", ""}
我尝试使用.split(':');
,但只是重新分配数组,所以它只有 2 元素而不是 3
感谢
答案 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);