删除字符串数组开头的字符

时间:2016-09-19 14:56:15

标签: c# arrays string

我打开一个txt文件并将其写入字符串数组。问题是如何使用字符串数组执行等效的字符串lines.Remove(0,6)?我知道我必须遍历数组中的每个[],但是我如何得到我想要的结果?

文本文件:

  

12345; 9/19/2016 something.pdf

我如何获取文件:

string[] lines = File.ReadAllLines(@"\\ecmvmdev21\text.txt");

期望的输出:

  

9/19/2016 something.pdf

5 个答案:

答案 0 :(得分:2)

如果您知道每行开头总会有6个不需要的字符,那么您可以这样做:

lines = lines.Select(x => x.Substring(6)).ToArray();

String.Substring()

答案 1 :(得分:2)

如你所说,循环遍历字符串数组,然后在for循环中循环:

lines[i] = lines[i].Substring(6);

答案 2 :(得分:1)

当您使用ReadAllLines时,您将获得一个数组,其中每个项目代表文件中的一行。

做你想做的事:

  • 改为使用.ReadAllText,然后您会收到一个string,其中包含所有文字(您可以在其上使用.Remove
  • 转到lines[0],然后转到.Remove。请务必检查您的位置0是否有项目,否则您将收到indexOutOfRangeException
  • 如果您想对所有行执行此操作,则可以使用linq的.Select

    lines = lines.Select(line => line.Remove(0,6));
    

答案 3 :(得分:1)

您可以使用LINQ和Select删除每行的前六个字符,例如:

string[] lines = File.ReadAllLines(@"\\ecmvmdev21\text.txt")
                     .Select(line=>line.Remove(0,6))
                     .ToArray();

string[] lines = File.ReadLines(@"\\ecmvmdev21\text.txt")
                     .Select(line=>line.Remove(0,6))
                     .ToArray();

区别在于ReadLines返回IEnumerable而不是string[],这意味着它在执行Select之前不会加载内存中的所有行。根据需要加载行。这样可以提高内存利用率

答案 4 :(得分:1)

lines[0] = lines[0].substr(6);