簡體   English   中英

C#-將字符串轉換為二維字符串數組

[英]C# - Convert string, to a two dimensional string array

我似乎無法弄清楚。

我想將其轉換為:

string foobarString = "[['Foo', 'bar'], ['Foo', 'bar'], ['Foo', 'bar']]";

對於二維數組(或列表),它看起來像這樣:

fooBarArray[0] = Array['Foo', "bar"];
fooBarArray[1] = Array['Foo', "bar"];
fooBarArray[2] = Array['Foo', "bar"];
... etc.

我試過用(“],”)分割,然后清理字符串,然后創建一個數組。 但這只是該死的丑陋!

我想要一個更干凈的版本。 C#中是否沒有為此方法內置的方法?

// 謝謝

由於您的問題沒有給我們提供足夠的信息,因此我假設您正在嘗試將一些JSON轉換為字符串數組。 據我所知,在C#中沒有為此內置方法。 您可以為此使用擴展名。 Newtonsoft JSON

安裝此軟件包后,您將可以使用以下代碼:

string foobarString = "[['Foo', 'bar'], ['Foo', 'bar'], ['Foo', 'bar']]";
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<string[][]>(foobarString);

首先,將其拆分為"[[", "], [", "]]"

var array1 = foobarString.Split(new string[] {"[[", "], [", "]]"}, StringSplitOptions.RemoveEmptyEntries);

array1將包含"'Foo', 'bar'""'Foo', 'bar'""'Foo', 'bar'"然后,您可以將每個元素都用','分隔

var fooBarArray = array1.Select(x => x.Split(',').ToArray()).ToArray()

您可以一行完成

var fooBarArray = foobarString.Split(new string[] { "[[", "], [", "]]" }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => x.Split(',').ToArray()).ToArray()

您可以使用Regex從源字符串中獲取數組元素,然后將匹配項轉換為數組。 這樣的事情應該可以解決問題:

  var input = "[['Foo', 'bar'], ['Foo', 'bar'], ['Foo', 'bar']]";

  // search for [' more than one word character, put them into group a ', 
  //   more than one whitespace ' more than one word character, put them into group b ']
  var arrayMatches = Regex.Matches(input, @"\['(?<a>[\w]+)',\s+'(?<b>[\w]+)'\]");

  var arrays = new List<string[]>();
  foreach (Match arrayMatch in arrayMatches)
  {
    // if the match was unsuccessful, take the next match
    if(!arrayMatch.Success)
      continue;

    // create a new string array with element in group a as first element and the element in groub b as the second one
    var array = new [] {arrayMatch.Groups["a"].Value, arrayMatch.Groups["b"].Value};
    arrays.Add(array);
  }

  // convert list to array
  return arrays.ToArray();

在那里您可以找到一些示例。 String.Split函數返回一個數組,因此您可以執行

string[] lines = foobarString.Split(new char[]{']'}, StringSplitOptions.RemoveEmtpyEntries);
fooBarArray[0] = lines[i].Split(new char[]{'[',']', ','}, StringSplitOptions.RemoveEmtpyEntries);

看一下這個線程: multiDimension-array-vs

{
    const string oldString = "[['Foo', 'bar'], ['Foo', 'bar'], ['Foo', 'bar']]";
    var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<List<string>>>(oldString);
}

暫無
暫無

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

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