簡體   English   中英

如何將字符串轉換為二維數組?

[英]How to convert string to 2D array of double?

我有這個變量:

string coord = "[[1,2,3,4], [5,6,7,8], ...]";

最后我希望是:

double[][] d = [[1,2,3,4], [5,6,7,8], ...]

這是我已經嘗試過的代碼:

double[] d = coord.Split(",").Select(n => Convert.ToDouble(n)).ToArray();

它給了我一個錯誤:System.FormatException:'輸入字符串的格式不正確。' 我的問題:

  1. 如何解決上述錯誤?

  2. 是否有任何適當的方法來進行這種轉換,如果有人有偽代碼來解決這種轉換,它真的對我有很大幫助。

更新:

這是我想到的偽代碼:

//convert string to one-dimensional array of double
//grap every 4 elements to be put on a single array
//add a single array that consist of 4 elements to the 2-dimensional array of double.
//Verify the result

您的字符串似乎采用 JSON 格式(如果您不熟悉,可以通過快速的谷歌搜索告訴您這是什么)

為什么不直接使用 System.Text.Json 或 Newtonsoft.JSON (第二個需要通過 NuGet 安裝)?

代碼將如下所示:

string input = "[[1,2,3,4], [12,1,52,3], [1,4,2,3]]";
double[][] output = System.Text.Json.JsonSerializer.Deserialize<double[][]>(input);

你可以試試這個。

它的作用是

//convert string to string[] with elements like "1,2,3,4", "5,6,7,8"
//convert each "1,2,3,4" in the array to string[] { "1", "2", "3", "4" }
    // Now we have string[][] = { { "1","2","3","4" }, { "5","6","7","8" } }
//convert each string[] to double[] by applying Double.Parse

var d = Array.ConvertAll<string[], double[]>
(
    coord.Replace(" ", "").Replace("],[", "|").Replace("[", "").Replace("]", "").Split('|')
    .Select(n => n.Split(','))
    .ToArray(),
    n => Array.ConvertAll(n, Double.Parse)
);

暫無
暫無

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

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