2014-06-11 84 views
0

我有一個獨特的情況,我需要創建位置爲零,然後是剩餘位置的拆分字符串的字符串數組。例如,我要輸入以下字符串:將字符串拆分爲特定的數組位置c#

"this/\is/\a/\test/\string" 

輸出結果如下

array[0] = null; 
array[1] = "this"; 
array[2] = "is"; 
array[3] = "a"; 
array[4] = "test"; 
array[5] = "string"; 

我知道我可以用幾行代碼的笨重的方式做到這一點,但我尋找一種將字符串拆分成特定數組位置的優雅方式,或者只是在它之前插入null。位置0的空字符串也是可以接受的,但並不理想。有沒有一個很好的方法來實現這個目標?陣列位置的數量會有所不同,因爲輸入字符串將有不同數量的參數需要拉動。

+2

拆分它你通常做的方式,使用'Array.Copy'並將其複製到索引1,並設置索引0'null'。 –

回答

9

前面加上您的分隔符的字符串,然後設置分割後空的第一個元素:

string data = @"this/\is/\a/\test/\string"; 
string[] result = (@"/\" + data).Split(new[] {@"/\"}, StringSplitOptions.None); 
result[0] = null; 
+0

@Habib修復它。 –

2

我想你可以在前面加上一個「/ \」給你即將分割字符串...

(這會給你一個空字符串,而不是空,你說的是好的,但不理想如果你想第一個條目爲空,你能做到這事後)

0

你可以在第一個索引處添加「\」和「/ \ Simple co德:

string input = @"this/\is/\a/\test/\string"; 
string[] result = (@"/\" + input).Split(new[] {@"/\"}, StringSplitOptions.None); 
1

如果你需要做很多次,你想你的代碼看起來很乾淨 - 或許你想要一個可變數目前置空的,你總是可以寫你自己的擴展方法:

public static class Extensions 
{ 
    public static string[] Split(this string input, string delimiter, int prependNullCount) 
    { 
     var defaultSplit = input.Split(new string[] { delimiter }, StringSplitOptions.None); 

     string[] result = new string[defaultSplit.Length + prependNullCount]; 

     defaultSplit.CopyTo(result, prependNullCount); 

     return result; 
    } 
} 

,然後你可以使用的方法:

string input = @"this/\is/\a/\test/\string"; 
string[] result = input.Split(@"/\", 1);