C# 在某一点写入.txt文件
我在这里尝试的是将用户选择的某个字符串写入.txt文件,但仅写入.txt文件的某个部分,例如: 文本文件将包含:C# 在某一点写入.txt文件,c#,C#,我在这里尝试的是将用户选择的某个字符串写入.txt文件,但仅写入.txt文件的某个部分,例如: 文本文件将包含: #name|user_login USERNAME #password|pass_recovery|user_pass PASSWORD ... ... ... 如果我在组合框下拉列表中键入文本框单词新用户(例如),我将选择用户名,我试图在.txt文件中找到这一行,然后像这样附加它: #name|user_login|new_user USERNAME #password|pass
#name|user_login
USERNAME
#password|pass_recovery|user_pass
PASSWORD
...
...
...
如果我在组合框
下拉列表中键入文本框
单词新用户
(例如),我将选择用户名
,我试图在.txt文件中找到这一行,然后像这样附加它:
#name|user_login|new_user
USERNAME
#password|pass_recovery|user_pass
PASSWORD
...
...
...
这同样适用于任何大写字母的行,到目前为止,我的功能是:
public void WriteToAIFile(string findThis, string writeThis)
{
var fileContent = File.ReadAllLines(@"LogicFiles\rj-ai-fields.txt");
foreach (string eachLine in fileContent) {
if (findThis == eachLine) {
// we have found the macro we want, go back up 1 line and append: "|" + writeThis to the end of the line ...
//var writeContent = File.WriteAllText(@"LogicFiles\rj-ai-fields.txt");
}
}
}
这是非常基本的,我想的是循环每一行,直到
找到它==eachLine
(大写字母值),然后将写的内容附加到该行的末尾,但在附加之前我需要返回1行,有没有更好的方法来实现这一点?在我看来,是否需要一个foreach
循环?感谢您的帮助,非常感谢。要在特定行之后插入一行,您应该使用向后for循环和List::insert
方法。请参见实现这一点的最简单方法是使用for
循环对字符串数组进行索引,而不是foreach
然后您可以编写一个循环,该循环从1开始,而不是从0开始,并“滞后”一个元素,这样您就可以更容易地将文本追加到前一行
然后,在循环终止后,您必须写入文件的最后一行作为额外步骤
大概是这样的:
public void WriteToAIFile(string findThis, string writeThis)
{
var fileContent = File.ReadAllLines(@"LogicFiles\rj-ai-fields.txt");
using (var output = File.CreateText("My filename"))
{
for (int i = 1; i < fileContent.Length; ++i)
{
if (fileContent[i] == findThis)
output.WriteLine(fileContent[i-1] + "|" + writeThis);
else
output.WriteLine(fileContent[i-1]);
}
output.WriteLine(fileContent[fileContent.Length-1]);
}
}
public void WriteToAIFile(字符串findThis,字符串writeThis)
{
var fileContent=File.ReadAllLines(@“LogicFiles\rj ai fields.txt”);
使用(var output=File.CreateText(“我的文件名”))
{
for(int i=1;i
如果您可以在想要插入用户名的位置存储一个唯一的符号(例如“”),那么您可以避免使用foreach,而是使用普通的字符串查找谢谢大家,这是一种更好的方法Matthew,for
循环就是一种方法。