Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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#_Arrays - Fatal编程技术网

C# 使用从数组中选择信息

C# 使用从数组中选择信息,c#,arrays,C#,Arrays,我有一个[ab,ab,ab,…]形式的字符串数组,我想创建一个只包含b值的新数组。我尝试了一个.split(“”),但它总是在数组错误的范围之外找到一个索引 for (int sequence = 0; sequence < FileIndex.Length; sequence++) { string[] SplitIndex = FileIndex[sequence].Split(' ');

我有一个[ab,ab,ab,…]形式的字符串数组,我想创建一个只包含b值的新数组。我尝试了一个.split(“”),但它总是在数组错误的范围之外找到一个索引

for (int sequence = 0; sequence < FileIndex.Length; sequence++)
                    {
                        string[] SplitIndex = FileIndex[sequence].Split(' ');
                        sequence++;
                        WriteLine(SplitIndex[sequence]);
                     }
for(int sequence=0;sequence
for(int sequence=0;sequence
拆分后,在
拆分索引中有两个元素:“a”“b”。如果要访问“b”,则必须使用
SplitIndex[1]
。您当前正在使用
SplitIndex[sequence]

此外,您还有两次
sequence++
。一个在
for
语句中,一个在循环中。您应该将其从循环中删除。

for(int sequence=0;sequence
拆分后,在
拆分索引中有两个元素:“a”“b”。如果要访问“b”,则必须使用
SplitIndex[1]
。您当前正在使用
SplitIndex[sequence]


此外,您还有两次
sequence++
。一个在
for
语句中,一个在循环中。您应该将其从循环中删除。

您也可以在此处使用LINQ:

using System.Linq;

...

var stringArray = new string[] { "a b", "a b", "a b" };

var result = stringArray
    .Select(str => str.Split(' ').Last())
    .ToArray();

Console.WriteLine("{ " + string.Join(", ", result) + " }");
// { b, b, b }
说明:

  • 选择数组中的每一个元素
  • 将每个字符串拆分为,并将最后一个元素拆分为。您也可以在此处使用
    [1]
    索引第二个元素
  • 将结果转换为具有的数组。也可以选择将结果保留为
    IEnumerable

您也可以在此处使用LINQ:

using System.Linq;

...

var stringArray = new string[] { "a b", "a b", "a b" };

var result = stringArray
    .Select(str => str.Split(' ').Last())
    .ToArray();

Console.WriteLine("{ " + string.Join(", ", result) + " }");
// { b, b, b }
说明:

  • 选择数组中的每一个元素
  • 将每个字符串拆分为,并将最后一个元素拆分为。您也可以在此处使用
    [1]
    索引第二个元素
  • 将结果转换为具有的数组。也可以选择将结果保留为
    IEnumerable
用于
方式
  • 删除
    sequence++
  • 更改
    WriteLine(拆分索引[sqequence])
    写入线(拆分索引[1])

  • 您可以添加错误处理

    var bees = test.Select(fi => fi.Split(' ', StringSplitOptions.RemoveEmptyEntries).Skip(1).FirstOrDefault() ?? "'No b!'" );
    
    试验
    用于
    方式
  • 删除
    sequence++
  • 更改
    WriteLine(拆分索引[sqequence])
    写入线(拆分索引[1])

  • 您可以添加错误处理

    var bees = test.Select(fi => fi.Split(' ', StringSplitOptions.RemoveEmptyEntries).Skip(1).FirstOrDefault() ?? "'No b!'" );
    
    试验
    不需要for循环内部的
    sequence++
    。这将在每次迭代时将
    sequence
    的值增加两次。不需要for循环内部的
    sequence++
    。这将在每次迭代中增加两次
    sequence
    的值。这将不起作用,因为
    sequence++
    中有额外的
    sequence++
    。这很好,但它会产生8个前导空格,我无法去掉它们,因此我可以对另一个进行比较variable@tymtam我已经为序列++进行了编辑在添加评论之前,请先添加dublication。我不知道你为什么会有这个问题。也许您应该告诉我FileIndex[sequence]显示了什么,以及它是否有超过1个空间。您始终可以使用TrimStart()要删除空格,这将不起作用,因为
    for
    内部有额外的
    序列+++
    。这可以很好地工作,但它会生成8个前导空格,我无法删除它们,以便我可以对另一个进行比较variable@tymtam在您添加评论之前,我已经为sequence++dublication进行了编辑。我不知道你为什么会有这个问题。也许您应该告诉我FileIndex[sequence]显示了什么,以及它是否有超过1个空间。始终可以使用TrimStart()删除空格
    var bees = test.Select(fi => fi.Split(' ', StringSplitOptions.RemoveEmptyEntries).Skip(1).FirstOrDefault() ?? "'No b!'" );
    
    var test = new string[] { "a a", "a b", "a c", "a ", "" };
    
    var bees = test.Select(fi => fi.Split(' ', StringSplitOptions.RemoveEmptyEntries).Skip(1).FirstOrDefault() ?? "'No b!'" );
    
    Console.WriteLine(string.Join(" ", bees));
    
    a b c 'No b!' 'No b!'