簡體   English   中英

將字符串拆分到特定的數組位置C#

[英]Split string to specific array position c#

我有一種獨特的情況,我需要創建在零位位置為null的字符串數組,然后為其余位置創建一個拆分字符串。 例如,我要輸入以下字符串:

"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的空字符串也可以接受,但不理想。 有一個好的方法可以做到這一點嗎? 數組位置的數量將有所不同,因為輸入字符串將具有不同數量的我需要提取的參數。

在字符串前添加定界符,然后在拆分后將第一個元素設置為null:

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

我想您可以在要分割的字符串前加上“ / \\”。

(這將為您提供一個空字符串而不是null,您說這是可以的,但並不理想。如果要將第一個條目設置為null,則可以在事實之后執行此操作。)

如果您需要多次執行此操作,並且希望代碼看起來很整潔,或者您想要可變數量的前置null,則可以始終編寫自己的擴展方法:

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);

您可以在第一個索引處添加/ \\並以“ / \\簡單代碼分隔:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM