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);
}
答案 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数组更像数组的数组感觉更舒服。
但如果您的目标是“从大字符串中删除文本块”,那么更简单的方法是:
string Example = "somestring";
string BlockRemoved = Example.Substring(1);
// BlockRemoved = "omestring"
修改强>
我误解了这个问题,认为你只是从数组中删除第一个元素,其中数组由构成字符串的字符组成。
要通过分隔符拆分字符串,请查看String.Split
方法。 Some good examples are given here