Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C-将字符串转换为二维字符串数组_C#_Arrays_Json_Multidimensional Array - Fatal编程技术网

C# C-将字符串转换为二维字符串数组

C# C-将字符串转换为二维字符串数组,c#,arrays,json,multidimensional-array,C#,Arrays,Json,Multidimensional 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. 我尝试过按“]拆分,然后清理字

我似乎无法理解这一点

我想将其转换为:

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中,这种方法没有内置的方法吗

//谢谢

首先,将其拆分为[[,]和[,]]

数组1将包含“Foo”、“bar”、“Foo”、“bar”、“Foo”、“bar” 然后你可以用“,”分割每个元素

你可以在一行中完成

var fooBarArray = foobarString.Split(new string[] { "[[", "], [", "]]" }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => x.Split(',').ToArray()).ToArray()
首先,将其拆分为[,],[,]]

数组1将包含“Foo”、“bar”、“Foo”、“bar”、“Foo”、“bar” 然后你可以用“,”分割每个元素

你可以在一行中完成

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

由于您的问题没有给我们提供足够的信息,我假设您正在尝试将一些JSON转换为字符串数组。 据我所知,C中没有用于此目的的内置方法。 您可以为此使用扩展

安装此软件包后,您将能够使用以下代码:

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

由于您的问题没有给我们提供足够的信息,我假设您正在尝试将一些JSON转换为字符串数组。 据我所知,C中没有用于此目的的内置方法。 您可以为此使用扩展

安装此软件包后,您将能够使用以下代码:

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

在那里你可以找到一些例子。Split函数返回一个数组,以便

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

看看这个帖子:

在那里你可以找到一些例子。Split函数返回一个数组,以便

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

看看这个线程:

您可以使用正则表达式从源字符串获取数组元素,然后将匹配项转换为数组。像这样的事情应该可以做到:

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

您可以使用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();

不清楚您在问什么,因为您没有从正确的C代码开始。请编辑您的帖子,以便您的问题能够被理解。另请参阅,以获取关于如何以清晰、负责的方式提出问题的好建议。抱歉,各位,我已经编辑了我的问题。我来自php背景,正在学习C语言。C语言中是否没有为这种方法内置的方法为什么会有?请改进您的问题,包括清楚地显示您尝试了什么,精确地解释代码的作用以及它与您想要的不同之处。不清楚您在问什么,因为您没有从正确的C代码开始。请编辑您的帖子,以便您的问题能够被理解。另请参阅,以获取关于如何以清晰、负责的方式提出问题的好建议。抱歉,各位,我已经编辑了我的问题。我来自php背景,正在学习C语言。C语言中是否没有为这种方法内置的方法为什么会有?请改进您的问题,包括清楚显示您尝试过的内容,并精确解释代码的作用以及与您想要的不同之处。如果有三项内容呢?['Foo'、'bar'、'baz']@M.kazemAkhgary:不确定这种情况是否现实。如果是,您必须更改正则表达式。如果有三个项目怎么办?['Foo','bar','baz']@M.kazemAkhgary:不确定这种情况是否现实。如果是,则必须更改正则表达式。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。