如何将字符串数组转换为 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 数组中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何把一个byte数组的数字转换成int

如何将转换为 char 数组的 int 返回到 main 以显示它

如何将输入的数字字符串转换为 int 数组?

从 Int 数组转换为字符串数组

将 C 字符数组转换为字符串

int数组 如何转换为 string