【问题标题】:Two Dimensional Array C#二维数组 C#
【发布时间】:2016-11-17 19:09:54
【问题描述】:

我会像这样从用户那里得到输入 - “99211,99212,99213_1,99214,99215_3”,并将其存储在一个字符串中

string cpt = "99211,99212,99213_1,99214,99215_3";
cptarray = cpt.Split(',');

我得到的输出为

cptarray[0] = "99211"
cptarray[1] = "99212"
cptarray[2] = "99213_1"
cptarray[3] = "99214"
cptarray[4] = "99215_3"

但我希望输出是:

cptarray[0][0] = "99211",""
cptarray[1][0] = "99212",""
cptarray[2][0] = "99213","1"
cptarray[3][0] = "99214",""
cptarray[4][0] = "99215","3"

如果我需要像上面那样得到输出,那么我可以使用二维数组吗,这是正确的方法吗?

【问题讨论】:

  • 也许你可以使用 Dictionary 或 Dictionary
  • 你展示的不是二维数组,而是锯齿状数组(数组的数组)。

标签: c# arrays multidimensional-array


【解决方案1】:

根据提供的语法:

 cptarray[0][0]
 ...
 cptarray[4][0]

你想要一个 锯齿形 数组,而不是 2D 数组;你可以在 Linq 的帮助下构造这个数组:

 var cptarray = cpt
   .Split(',')
   .Select(number => number.Split('_'))
   .Select(items => items.Length == 1 ? new string[] {items[0], ""} : items)
   .ToArray();

测试

string test = string.Join(Environment.NewLine, cptarray
  .Select((line, index) => string.Format("cptarray[{0}] = {1}", 
     index,
     string.Join(", ", line.Select(item => "\"" + item + "\"")))));

Console.Write(test);

输出

 cptarray[0] = "99211", ""
 cptarray[1] = "99212", ""
 cptarray[2] = "99213", "1"
 cptarray[3] = "99214", ""
 cptarray[4] = "99215", "3"

【讨论】:

  • 这一行显示语法错误 - string test = string.Join(Environment.NewLine, cptarray .Select((line, index) => $"cptarray[{index}] = {string.Join( ", ", line.Select(item => "\"" + item + "\""))}"));
  • @Aruna:你使用 C# 6.0 吗? $"..." 是一个出现在 C# 6.0 中的 字符串插值
  • @Aruna:我在test 中为字符串格式更改了字符串插值(见我的编辑)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2011-08-15
  • 2011-06-26
相关资源
最近更新 更多