C# 输入一个文本文件,将文本添加到每一行,写入一个新文件C

C# 输入一个文本文件,将文本添加到每一行,写入一个新文件C,c#,list,io,C#,List,Io,对于家庭作业,我必须为MIPS代码创建一个非常简化的汇编程序。 因此,我们接收MIPS指令的输入文件,然后输出一个带有相关二进制文件的文件作为输入代码。每行代码都必须映射到一个内存位置,该内存位置仅为该行前面的一个十六进制值,但我们添加/分配了该内存 因此,我想做的是从文本文件的每一行中读取,在前面我想在十六进制+行号*4中附加一个起始内存地址值。然后我想重读这个文件。如果我需要读取整个文件,用指定的内存创建一个新文件,然后读取该文件,这很好,但我认为可能不必要 我们的教授提出了一份清单,以下是

对于家庭作业,我必须为MIPS代码创建一个非常简化的汇编程序。 因此,我们接收MIPS指令的输入文件,然后输出一个带有相关二进制文件的文件作为输入代码。每行代码都必须映射到一个内存位置,该内存位置仅为该行前面的一个十六进制值,但我们添加/分配了该内存

因此,我想做的是从文本文件的每一行中读取,在前面我想在十六进制+行号*4中附加一个起始内存地址值。然后我想重读这个文件。如果我需要读取整个文件,用指定的内存创建一个新文件,然后读取该文件,这很好,但我认为可能不必要

我们的教授提出了一份清单,以下是我到目前为止得到的:

Console.WriteLine("Please enter the path to the input file:");
string inp = Console.ReadLine();
Console.WriteLine("Please enter the name of the new file:");
string otp = Console.ReadLine();
StreamReader inputFile = new StreamReader(inp);
StreamWriter outputFile = new StreamWriter(otp);
List<string> fileContents = new List<string>();
while ((inp = inputFile.ReadLine()) != null)
     fileContents.Add(inp);
所以我的问题是:如何将字符串添加到列表fileContents中每个项目的开头

编辑: 接下来:到目前为止,我已经完成了所有这些工作,我已经将整个文档、内存位置映射到每一行,等等。但是,我需要进一步编辑列表inputLines中的一些行,从中删除一些信息

格式始终为[0]内存地址[1]标签,如果此行中没有标签,则为寄存器、操作等[2]-[?]寄存器、操作等。 一旦我把我的内存映射到每一行,任何一行都有一个标签,我想把它放到字典里,索引作为标签,内存地址作为包含的值,然后去掉标签。那么-如何从包含该信息的任何行中删除该信息

//go through each line, if any line's first "token" is a label, 
//put it in the dictionary as the index with the memory address as the value
//delete the label from the line
for (int i = 0; i < inputLines.Length; i++)
    {
       string[] token = inputLines[i].Split(new char[] { ' ', ',', '(', ')', ':' }, StringSplitOptions.RemoveEmptyEntries);
            string possibleLabel = token[1];
            if (opcodes.ContainsKey(possibleLabel) == false)
            {
                labeltable.Add(possibleLabel, token[0]);
                //at this point I want to delete the possibleLabel from the inputLines[i] and not deal with it anymore.
            }

        }

这确实符合我的字典,所以不用担心这一部分。

假设您的前缀在另一个列表中

var inputLines = File.ReadAllLines(inputFilePath);
for (int i=0; i<inputLines.Length; i++)
    inputLines[i] = "Some Text" + inputLines[i];
var prefixes = new List<string>(/* som values */);

var ix = 0;

var result = fileContents.Select(x => string.Join(" ", prefixes[ix++], x)).ToArray();
如果您需要连接字典中的在线编号

var prefixes = new Dictionary<int, string>(); // Needs values

var result = new List<string>();

for (var i = 0; i < fileContents.Count; i++){
   string prefix;

   if (prefixes.TryGetValue(i, out prefix){ result.Add(string.Join(" ", prefix, fileContent[i])) }
   else { result.Add(fileContent[i]);}
}

您可以使用StringBuilder优化Faisal的代码,否则它将非常适合您的需要

Console.WriteLine("Please enter the path to the input file:");
string inp = Console.ReadLine();
Console.WriteLine("Please enter the name of the new file:");
string otp = Console.ReadLine();

System.Text.StringBuilder sb = new System.Text.StringBuilder();
string inputLines = System.IO.File.ReadAllLines(inp);
 for (int i = 0; i < inputLines.Length; i++)
     sb.Append("Some Text" + inputLines[i] + Environment.NewLine);

File.WriteAllText(otp, sb.ToString())

阅读列表中的所有行,将新文本添加到列表的开头,然后将其写入输出文件,Hello Neil,您可以查看提供的答案并选择任何一个作为答案。这会给你5分,让你更接近15分的投票特权,我将变量inputFilePath改为inputFile,因为我假设这就是您的意思,它抛出了以下错误:“System.IO.File.ReadAllLinesstring”的最佳重载方法匹配有一些无效参数错误2 Argument1:无法从System.IO.StreamReader转换为stringvar inputFilePath=@C:\input.txt;inputFilePath是一个字符串,应该可以工作。如果文件不存在,则会出现一些异常,但情况会有所不同;i<输入线长度;i++{int addedMemory=0x4*i;int memoryAddress=addedMemory+startingAddress;string memory=memoryAddress.ToString;inputLines[i]=memory+inputLines[i];}i将变量inputFilePath更改为inputFile,因为我假设这就是您的意思,它抛出了以下错误:“System.IO.File.ReadAllLinesstring”的最佳重载方法匹配有一些无效参数错误2 Argument1:无法从System.IO.StreamReader转换为stringIt应根据您的要求为inp,我已经编辑了帖子,我已经将帖子与你的帖子合并为一个完整的块