我正在拆分这样的字符串:
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries);
除templine
以外,如何从[1]
获取每个元素,并将其分配给string[] elements
?
答案 0 :(得分:6)
string[] elements = templine.Split(space).Where((s, i) => i != 1).ToArray();
答案 1 :(得分:3)
这里有很多疯狂的LINQ示例。如果这对您很重要,那么这应该更有效:
public static T[] SkipElement<T>(this T[] source, int index)
{
// Leaving out null/bounds checking for brevity.
T[] array = new T[source.Length - 1];
Array.Copy(source, 0, array, 0, index);
Array.Copy(source, index + 1, array, index, source.Length - index - 1);
return array;
}
你可以这样做:
string[] elements = templine.Split(space, StringSplitOptions.RemoveEmptyEntries);
elements = elements.SkipElement(1);
答案 2 :(得分:1)
List<String> elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).
ToList().
RemoveAt(1);
如果你觉得有必要回到阵列......
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).
ToList().
RemoveAt(1).
ToArray();
答案 3 :(得分:0)
如果您可以使用Linq,您可以这样做:
IEnumerable<string> elements = templine.Split(...).Take(1).Skip(1);
答案 4 :(得分:0)
使用Linq,你可以做到
IEnumerable<String> elements =
empline.Split(space, StringSplitOptions.RemoveEmptyEntries);
String[] result =
elements
.Take(1)
.Concat(elements
.Skip(2))
.ToArray();
答案 5 :(得分:0)
好吧,你可以问你的兄弟Jon
或者你可以这样做:
var elements = templine.Split(space, StringSplitOptions.RemoveEmptyEntries).Skip(1).ToArray();
这将为您提供一个包含除第一个元素之外的所有元素的数组。如果你想要第一个,而不是第二个(如你的问题那样),你可以这样做:
var allElements = templine.Split(space, StringSplitOptions.RemoveEmptyEntries);
var someElements = allElements.Take(1).Concat(allElements.Skip(2)).ToArray();
答案 6 :(得分:0)
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).Where(s => s != "[1]").ToArray();
如果你的意思是你想删除第二个元素
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).Where((s, i) => i != 1).ToArray();
答案 7 :(得分:0)
在上面的代码之后:
elements = elements.Take(1).Concat(elements.Skip(2)).ToArray();
我想指出的一点是:即使原始Take
太短,Skip
和elements
也不会抛出错误;它们只会生成空的IEnumerable
(可以安全地连接,并且可以安全地调用其方法)。