我有以下文字
part1:part2
使用填充一個String []數組拆分
和下面的String []數組
string[] tmp = new string[3];
我怎麼可以拆分我的文字,把它放入數組等等該陣列是這樣的:
{"part1", "part2", ""}
我嘗試使用.split(':');
但只是重新分配陣列,因此它只有個2元素,而不是
感謝
我有以下文字
part1:part2
使用填充一個String []數組拆分
和下面的String []數組
string[] tmp = new string[3];
我怎麼可以拆分我的文字,把它放入數組等等該陣列是這樣的:
{"part1", "part2", ""}
我嘗試使用.split(':');
但只是重新分配陣列,因此它只有個2元素,而不是
感謝
雖然我肯定有一個更好的方式做你正在嘗試做的,在我看來,實現精確結果你是經過最簡單的方法是做一個副本:
var input = "text1:text2";
var temp = new [] {"", "", ""};
var split = input.Split(':');
Array.Copy(split, temp, split.Length <= 3 ? split.Length : 3);
+1,但這個答案不會導致*正是* OP的要求。最後一個元素是'null'而不是''「'。 –
@DanielHilgarth啊錯過了!修正了答案;) –
這是否真的是實現這一結果的唯一方法?似乎不太可能。 – LarsH
如果你真的需要三個要素所得數組中,你將有結果從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;
}
並不過分優雅,但如果這是你想要什麼,你可以Resize數組。
string [email protected]"part1:part2";
var result = input.Split(':');
Array.Resize(ref result, 3);
result[2]=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);
你只有兩個元素,你怎麼指望從拆分三個要素? – Habib
string [] tmp = new string [3];無需指定tmp中的元素數量 – David
因此,無論輸入上下文包含什麼內容,您總是希望將一個空字符串添加到數組的末尾? – LarsH