如何将字符串数组转换为 int 数组以访问 int 数组中的数据?
Posted
技术标签:
【中文标题】如何将字符串数组转换为 int 数组以访问 int 数组中的数据?【英文标题】:How to convert a string array to an int array to access data inside int array? 【发布时间】:2020-05-09 16:19:48 【问题描述】:我有类似的字符串
string text = "3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;";
我想把上面的字符串转换成一个int数组,比如
[[3,4,5,6,7],[3,4,5,6,7], [3,4,5,6,7], [3,4,5,6,7], [3,4,5,6,7]]
我想这样做以便我可以访问每个数字,因为我想对每组数组进行一些数学运算,例如 (3+4)/2 和 (5+6)/2。
到目前为止,我使用的是简单的拆分方法:
string[] columns = text.Split(';');
并使用以下方法打印:
foreach (var item in columns)
Console.WriteLine($"item");
但这没有用,我得到一个接一个的数字,每个数字都表示单独的项目。
我希望[3,4,5,6,7]
作为一个项目和这个特定项目内的 5 个项目,并以整数形式。
你能帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:试试这样:
var columns = text.Split(new[] ";;" , StringSplitOptions.RemoveEmptyEntries);
foreach (var column in columns)
var numbers = column.Split(';').Select(y => int.Parse(y));
如果您想要空条目,则必须将 StringSplitOptions 更改为 StringSplitOptions.None
【讨论】:
重要的是要注意您添加了 StringSplitOptions.RemoveEmptyEntries 属性(在 split 函数中)....也许他希望能够为“1;2;;;;”等输入创建空数组3;4" 应该导致 [[1,2],[],[3,4]] 不,我不想创建空数组,事实上我在字符串(;;) 中添加了两个分号,以便更容易将字符串等分。【参考方案2】:var output = text.Split(";;", StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split(";").Select(i => int.Parse(i)));
首先在;;
上拆分。
然后对于每个组,在;
上再次拆分。
然后将每个解析为 int。
根据评论更新
我假设需要忽略空条目,但如果不需要,只需删除 StringSplitOptions
:
var output = text.Split(";;")
.Select(s => s.Split(";").Select(i => int.Parse(i)));
或者如果您需要与 .NET Framework 兼容:
var output = text.Split(new [] ";;" , StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split(';').Select(i => int.Parse(i)));
或包含空条目:
var output = text.Split(new [] ";;" , StringSplitOptions.None)
.Select(s => s.Split(';').Select(i => int.Parse(i)));
【讨论】:
这样不行,因为没有 string.Split(string) 方法。见这里docs.microsoft.com/de-de/dotnet/api/… 与@SteveZ 的答案相同,重要的是要注意您添加了 StringSplitOptions.RemoveEmptyEntries 属性(在 split 函数中)......也许他希望能够为“ 1;2;;;;3;4" 这应该导致 [[1,2],[],[3,4]] @SteveZ .NET Core 中有:docs.microsoft.com/en-us/dotnet/api/… 我正在使用 foreach 循环来显示输出项,但改为:System.Linq.Enumerable+WhereSelectArrayIterator`2[System.String,System.Int32] @VedantGonnade 您的问题表明您想要整数;如果您只是写到控制台,那么int.Parse
是不必要的步骤。无论如何,要写入控制台,您将执行 foreach (var item in output) Console.WriteLine(string.Join(",", item));
以上是关于如何将字符串数组转换为 int 数组以访问 int 数组中的数据?的主要内容,如果未能解决你的问题,请参考以下文章