我有一个大约3毫米行的文件。每行包含如下记录:
1|2|3|4|5|6|7|8|9
正好8个分隔符,如'|'在每一行。我正在寻找一种方法来读取这个文件,然后从每一行中提取最后的'9'数字并将其存储到另一个文件中。
编辑:
好的,这就是我已经完成的事情。
using (StreamReader sr = new StreamReader(filepath))
using (StreamWriter sw = new StreamWriter(filepath1))
{
string line = null;
while ((line = sr.ReadLine()) != null)
sw.WriteLine(line.Split('|')[8]);
}
File.WriteAllLines("filepath", File.ReadAllLines(filepath).Where(l => !string.IsNullOrWhiteSpace(l)));
读取文件,提取最后的数字,然后写入新文件并清除空白行。最后一个数字是10-15个符号,我想先提取6.我继续阅读并尝试一些,当我完成或有一些问题我会再次编辑。
由于
编辑2: 好的,这里我从数字中取出前8位数字:
sw.WriteLine(line.Substring(0, Math.Min(line.Length, 8)));
编辑3: 我不知道如何才能匹配文件中剩下的每个数字。我想匹配它们并查看女巫号码在文件中的次数。
任何帮助?
答案 0 :(得分:3)
我正在寻找一种方法来读取此文件,然后仅从每一行提取最后一个[..]号并将其存储到另一个文件中。
你遇到什么问题?在伪代码中,这就是你想要的:
fileReader = OpenFile("input")
fileWriter = OpenFile("output")
while !fileReader.EndOfFile
line = fileReader.ReadLine
records[] = line.Split('|')
value = records[8]
fileWriter.WriteLine(value)
do
因此,开始实施它,并随时就您遇到问题的任何特定行提出问题。我发布的每行代码都包含足够的指针,可以找出C#代码或用于网络搜索的术语。
答案 1 :(得分:2)
你没有说你被困在哪里。打破问题:
Write and run minimal C# program
Read lines from file
Break up one line
write result line to a file
你是否被困在其中任何一个?然后问一个具体的问题。这种分解技术是许多编程任务的关键,也是一般复杂的任务。
您可能会发现string split功能很有用。
答案 2 :(得分:2)
因为它是一个巨大的文件,你必须逐行阅读!
public IEnumerable ReadFileIterator(String filePath)
{
using (StreamReader streamReader = new StreamReader(filePath, Encoding.Default))
{
String line;
while ((line = streamReader.ReadLine()) != null)
{
yield return line;
}
yield break;
}
}
public void WriteToFile(String inputFilePath, String outputFilePath)
{
using (StreamWriter streamWriter = new StreamWriter(outputFilePath, true, Encoding.Default))
{
foreach (String line in ReadFileIterator(inputFilePath))
{
String[] subStrings = line.Split('|');
streamWriter.WriteLine(subStrings[8]);
}
streamWriter.Flush();
streamWriter.Close();
}
}
答案 3 :(得分:1)
使用String.Split()
获取数组中的行并获取最后一个元素并将其存储到另一个文件中。对每一行重复此过程。
答案 4 :(得分:1)
从StreamReader.Readline()
和String.Split()
开始的一些指针。两个页面都有例子。
答案 5 :(得分:1)
使用LINQ,您可以执行以下操作来过滤数字:
var numbers = from l in File.ReadLines(fileName)
let p = l.Split('|')
select p[8];
然后将它们写入一个新文件:
File.WriteAllText(newFileName, String.Join("\r\n", numbers));
答案 6 :(得分:1)
using (StreamReader sr = new StreamReader("input"))
using (StreamWriter sw = new StreamWriter("output"))
{
string line = null;
while ((line=sr.ReadLine())!=null)
sw.WriteLine(line.Split('|')[8]);
}
答案 7 :(得分:1)
试试这个......
// Read the file and display it line by line.
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
string[] words = s.Split('|');
string value = words [8]
Console.WriteLine (value);
}
file.Close();