[英]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.