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