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:不确定这种情况是否现实。如果是,则必须更改正则表达式。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。