簡體   English   中英

C#:如何將字符串“[['x','x'],['x','x']]”轉換為沒有Split()的數組?

[英]C#: How to transform String “[['x','x'],['x','x']]” into an Array without Split()ing?

該字符串看起來像一個二維數組:

[['a;b;c','d','e'],['a;b;c;d','h','k'], ... ]

但是我如何評估它並在C#中將其轉換為2D數組而不使用Split()?

它看起來像一個JSON字符串。 如果是,則使用DataContractJsonSerializer將字符串反序列化為string[][]

如果遇到編程問題並且遇到困難,請將其分解為更簡單的編程問題。 這個答案將告訴你如何只使用C#字符串原語粗略地解析你的字符串的一個“子數組”到列表中。 這將是一個很好的進展,然后你可以開始擴展和改進代碼。

var s = "['a;b;c','d','e']";
List<string> list = new List<string>();
int i = 0;
while (i < s.Length)
{
    char c = s[i++];
    if (c == '[')
    {
        while (i < s.Length)
        {
            c = s[i++];
            if (c == '\'')
            {
                int start = i;
                while (i < s.Length && s[i] != '\'')
                    i++;
                list.Add(s.Substring(start, i - start));
                i++;
            }
            if (i < s.Length && s[i] == ',')
                i++;
            if (i < s.Length && s[i] == ']')
            {
                i++;
                break;
            }
        }
    }
}
foreach (var item in list)
    Console.WriteLine(item);

這產生了輸出:

a;b;c
d
e

它不是二維的,但我不打算為你編寫整個程序。 它也將它放入List而不是數組,但你必須這樣做,因為你不知道它有多大。 這就是我的意思,將問題分解為可以解決的較小部分。

您還可以通過對缺少的逗號等進行大量錯誤檢查來改進代碼。但這應該可以幫助您入門。

暫無
暫無

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

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