我分裂像这样的字符串:在空间拆分字符串,删除空条目
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries);
我怎样才能从templine
每一个元素,除了[1]
并将其分配给string[] elements
?
我分裂像这样的字符串:在空间拆分字符串,删除空条目
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries);
我怎样才能从templine
每一个元素,除了[1]
并将其分配给string[] elements
?
string[] elements = templine.Split(space).Where((s, i) => i != 1).ToArray();
如果你可以使用LINQ,你也许可以这样做:
IEnumerable<string> elements = templine.Split(...).Take(1).Skip(1);
这将抛出一个编译时异常,您需要将其转换为数组或具有IEnumerable元素。 – 2011-02-04 21:40:07
它不会抛出编译时异常(这个评论是在我的编辑之后),除非你指的是我省略了实际的参数,我认为一个相当聪明的人会理解我所得到的。虽然我承认我的解决方案不正确。 – 2011-02-04 22:05:12
使用LINQ,你可以做
IEnumerable<String> elements =
empline.Split(space, StringSplitOptions.RemoveEmptyEntries);
String[] result =
elements
.Take(1)
.Concat(elements
.Skip(2))
.ToArray();
(1)是第一个元素的权利?我需要跳过第二个,[0]第一个右手? – 2011-02-04 21:39:26
对不起,我现在编辑 – DaveShaw 2011-02-04 21:41:15
List<String> elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).
ToList().
RemoveAt(1);
如果你觉得有必要回到数组...
string[] elements = templine.Split
(space, StringSplitOptions.RemoveEmptyEntries).
ToList().
RemoveAt(1).
ToArray();
嗯,你既可以让你的兄弟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();
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();
这里有很多疯狂的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;
}
有了这个,你可以这样做:
elements = elements.Take(1).Concat(elements.Skip(2)).ToArray();
一两件事:
string[] elements = templine.Split(space, StringSplitOptions.RemoveEmptyEntries);
elements = elements.SkipElement(1);
你上面的代码后我想指出:Take
和Skip
不会抛出错误,即使原来的elements
太短;他们只会产生空的IEnumerable
(可以安全地连接,并且可以安全地调用其方法)。
@justin对不起,我只是想分割该字符串,把它放在字符串数组中,但不包括第二个元素 – 2011-02-04 21:42:41
谢谢,我刚开始误读你的问题。 – 2011-02-04 21:51:07