我有一个[a b,a b,a b,...]形式的字符串数组,我想创建一个仅包含b值的新数组。我试过了.split(“”),但是它总是在数组错误的范围之外提出一个索引。
for (int sequence = 0; sequence < FileIndex.Length; sequence++)
{
string[] SplitIndex = FileIndex[sequence].Split(' ');
sequence++;
WriteLine(SplitIndex[sequence]);
}
答案 0 :(得分:0)
for (int sequence = 0; sequence < FileIndex.Length; sequence++)
{
string[] SplitIndex = FileIndex[sequence].Split(' ');
sequence++;
WriteLine(SplitIndex[1]);
}
拆分之后,在SplitIndex
中,您将有两个元素:“ a” 和“ b” 。如果要访问“ b” ,则必须使用SplitIndex[1]
。您当前正在使用SplitIndex[sequence]
此外,您有两次sequence++
。 for
语句中的一个,循环内的一个。您应该将其从循环中删除。
答案 1 :(得分:0)
您也可以在这里使用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 }
说明:
Enumerable.Select()
String.Split()
分割每个字符串,并用Enumerable.Last()
提取最后一个元素。您也可以在此处使用[1]
索引第二个元素。List.ToArray()
将结果转换为数组。 (可选)您也可以将结果也保留为IEnumerable<string>
。 答案 2 :(得分:0)
for
方式sequence++;
WriteLine(SplitIndex[sqequence]);
更改为WriteLine(SplitIndex[1]);
for (int sequence = 0; sequence < FileIndex.Length; sequence++)
{
string[] SplitIndex = FileIndex[sequence].Split(' ');
//sequence++;
WriteLine(SplitIndex[1]);
}
//Note: no error handling
var bees = FileIndex.Select(fi => fi.Split(' ')[1]);
您可以添加错误处理
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!'