拆分空格上的字符串并删除空条目

时间:2011-02-04 21:34:43

标签: c#

我正在拆分这样的字符串:

string[] elements = templine.Split
                            (space, StringSplitOptions.RemoveEmptyEntries);

templine以外,如何从[1]获取每个元素,并将其分配给string[] elements

8 个答案:

答案 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太短,Skipelements也不会抛出错误;它们只会生成空的IEnumerable(可以安全地连接,并且可以安全地调用其方法)。