我在读取文本文件时出现问题,在此处我跳过第一行,然后将其放入char数组中。读取文本文件时出现问题,我跳过1行并将其置于char数组中
如果我想将它放入一个看起来像下面的代码的数组中,操作非常简单,但它又应该是一个char数组。
var content = File.ReadAllLines("Labyrint.txt");
File.WriteAllLines("Labyrint.txt", content.Skip(1).ToArray());
我在读取文本文件时出现问题,在此处我跳过第一行,然后将其放入char数组中。读取文本文件时出现问题,我跳过1行并将其置于char数组中
如果我想将它放入一个看起来像下面的代码的数组中,操作非常简单,但它又应该是一个char数组。
var content = File.ReadAllLines("Labyrint.txt");
File.WriteAllLines("Labyrint.txt", content.Skip(1).ToArray());
要做到这一点,你必须手动读取LL使用流读者这样
编辑 更正皮克Systax
StringBuilder sb = new StringBuilder();
using(StreamReader sr = new StreamReader("Labyrint.txt")){
sr.ReadLine(); //skip first Line
while(sr.Peek()!=-1){
sb.AppendLine(sr.ReadLine());
}
}
char[] content = sb.ToString().ToCharArray();
File.WriteAllText("Labyrint.txt",sb.ToString());
感谢您的回复,但是我在“peek”一词下面出现一条红线,表示“StreamReader不包含peek的定义,并且没有可以找到接受类型StreamReader的第一个参数的扩展方法(您是否缺少using指令或一个程序集引用)我看不到使用了我缺少的指令我有两个系统和系统IO吗?顺便说一下,你能解释每一行代码,所以它清楚地知道它是什么。 – cop77
@ cop77利用它... – MrZander
感谢MrZander帮助我们完成代码的工作,但它与我提出的解决方案有着完全相同的问题,代码首次运行时工作正常,它删除了第一行,但下次启动程序会删除下一行,意思是每次程序运行时删除一行并保存文件?我希望它导入文件并删除第一行但不保存文件行删除。我怎么做? – cop77
其实我没有找到一个方法来行让它工作,但问题是它只在第一次运作。之所以第一次启动程序会删除文件中的第一行。但是,文件保存时第一行被删除。所以下次程序启动时,它会删除新的第一行,直到文本文件中没有更多的行。
//Delete the first line in the textfile
var Labo = File.ReadAllLines("Labyrint.txt");
File.WriteAllLines("Labyrint.txt", Labo.Skip(1).ToArray());
//import the textfile after the first line has been deleted
string content = File.ReadAllText("Labyrint.txt", Encoding.UTF8);
// Use ToCharArray to convert string to array.
char[] array = content.ToCharArray();
好了一天后,沮丧和不同的方法我终于找到了解决方案。除了找到解决方案之外,我还设法让代码变得非常简单,所以这是一个美好的一天。你们在下面找到正确的解决办法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
namespace ConsoleApplication25
{
class Program
{
static char[] values;
static void Main(string[] args)
{
//Increase Console Buffer Height
Console.BufferHeight = Int16.MaxValue - 1;
foreach (var line in File.ReadAllLines("Labyrint.txt", Encoding.UTF8).Skip(1))
{
values = line.ToCharArray();
Console.WriteLine(values);
}
//finds the character on index 0
Console.WriteLine(values[0]);
}
}
}
好吧,我的速度太快了,不能自拔,因为如果你不是0而试图获得56的索引,那么它会抛出异常。如果你在foreach循环外面说Console.WriteLine(values),它只显示输出窗口中的最后一行。任何知道如何将foreach循环的最终结果保存在字符串变量中的人,而不是现在只保存最后一行的人? - – cop77
我不知道如果我是按照这个线索,或者如果人们只是没有任何线索唯一可以做的呢? 无论如何,我想出了一个解决方案,现在几乎工作。这意味着文本文件中的第一行会被跳过,然后在stringbuilder的帮助下将它放置在char数组中。然而,并非所有事情都是完美的,因为当我通过索引号查找元素时,它们应该是2个地方。 Forinstens角色B应该在索引21,但由于某种原因,它在索引23?我检查了文本文件,并且在文本文件中的任何行之后没有空格,并且构建器没有修剪方法,因此任何人都有任何建议?你们发现我的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
namespace ConsoleApplication25
{
class Program
{
static char[] FloridaArray;
static string DenverString;
static void Main(string[] args)
{
//Increase Console Buffer Height
Console.BufferHeight = Int16.MaxValue - 1;
DenverString = ConvertStringArrayToString();
FloridaArray = DenverString.ToArray();
Console.WriteLine(DenverString);
Console.WriteLine(FloridaArray[43]);
}
static string ConvertStringArrayToString()
{
// Concatenate all the elements into a StringBuilder.
StringBuilder builder = new StringBuilder();
foreach (var value in File.ReadAllLines("Labyrint.txt", Encoding.UTF8).Skip(1))
{
builder.Append(value);
builder.AppendLine();
}
return builder.ToString();
}
}
}
你面临的问题是什么?此外,您提供的代码中没有字符数组 – Vikhram
您是否只想在单行中写入所有行,但是跳过的行只有一行? –
C#中的char []具有相对较少的用途。你的意思是你想要一个'string'中的所有行吗?你会如何使用它? – crashmstr