从数组中删除第一个元素

时间:2012-02-09 22:35:26

标签: c#

PHP开发人员在这里使用c#。 我使用一种技术从一个大字符串中删除一个文本块,方法是将字符串爆炸成一个数组,然后将第一个元素移出数组并将剩下的字符串转换成字符串。

使用PHP(一种非常棒的语言),它只是

$array = explode('somestring',$string);
array_shift($array);
$newstring = implode(' ', $array);

我完成了。

我对c#感到很生气,因为我不允许我创建动态数组,也没有提供默认函数,这些函数可以像PHP一样对数组做同样的事情。而不是动态数组我必须创建列表和预定义键结构等。但我是新的,我确信仍然有同样优雅的方式来做同样的c#。

有人会用c#向我展示一个干净的方法来实现这个目标吗?

问题的改述:如何使用c#代码从数组中删除第一个元素。

这是我已经走了多远,但RemoveAt在调试时抛出错误,所以我不相信它有效:

//scoop-out feed header information
if (entry_start != "")
{
    string[] parts = Regex.Split(this_string, @entry_start);
    parts.RemoveAt(0);
    this_string = String.Join(" ", parts);
}

7 个答案:

答案 0 :(得分:37)

  

我因为不允许我创建动态数组而对c#感到很生气

您可以查看List<T>课程。其RemoveAt可能值得一试。

但是对于您的特定场景,您可以简单地使用LINQ和Skip扩展方法(不要忘记将using System.Linq;添加到您的文件中以使其进入范围):

if (entry_start != "")
{
    string[] parts = Regex.Split(this_string, @entry_start).Skip(1).ToArray();
    this_string = String.Join(" ", parts);
}

答案 1 :(得分:11)

C#不是设计得快而脏,也不是特别擅长于文本操作。此外,您从一开始就用于删除字符串的某些部分的技术是疯狂的imho。

为什么不使用String.Substring(int start, int length)加上String.IndexOf("your delimiter")

答案 2 :(得分:7)

这是相应的C#代码:

string input = "a,b,c,d,e";
string[] splitvals = input.Split(',');
string output = String.Join(",", splitvals, 1, splitvals.Length-1);
MessageBox.Show(output);

答案 3 :(得分:4)

您可以使用LINQ:

if (entry_start != "")
    this_string = String.Join(" ", Regex.Split(this_string, @entry_start).Skip(1).ToArray());

答案 4 :(得分:2)

string split = ",";
string str = "asd1,asd2,asd3,asd4,asd5";
string[] ary = str.Split(new string[] { split }, StringSplitOptions.RemoveEmptyEntries);
string newstr = string.Join(split, ary, 1, ary.Count() - 1);

分裂为“,”。删除第一条记录。然后与“,”结合起来

答案 5 :(得分:2)

如上所述,您可以使用LINQ。 Skip(int)将返回IEnumerable<string>,然后您可以将其作为数组投回。

string[] myArray = new string[]{"this", "is", "an", "array"};
myArray = myArray.Skip(1).toArray();

答案 6 :(得分:0)

对于通用列表而言,您可能比使用PHP数组更像数组的数组感觉更舒服。

List<T>

但如果您的目标是“从大字符串中删除文本块”,那么更简单的方法是:

string Example = "somestring";
string BlockRemoved = Example.Substring(1);
// BlockRemoved = "omestring"

修改

我误解了这个问题,认为你只是从数组中删除第一个元素,其中数组由构成字符串的字符组成。

要通过分隔符拆分字符串,请查看String.Split方法。 Some good examples are given here