我正在尝试删除已打开和使用的文本文件中的最后一个逗号。
我正在使用(String.LastIndexOf
)函数来尝试使其工作。
然而它不起作用。如何在我打开的文本文件中删除最后一个逗号?
这是我到目前为止所尝试的内容:
DialogResult openFile = openFileDialog1.ShowDialog();
if (openFile == DialogResult.OK)
{
Functions func = new Functions();
string file = openFileDialog1.FileName;
string content = File.ReadAllText(file);
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Text File|*.txt";
sfd.FileName = "New Text Doucment";
sfd.Title = "Save As Text File";
if (sfd.ShowDialog() == DialogResult.OK)
{
string path = sfd.FileName;
StreamWriter bw = new StreamWriter(File.Create(path));
bw.WriteLine(content);
bw.Close();
File.WriteAllLines(path, File.ReadAllLines(path).Select(x => string.Format("{0},", x)));
string newContent = File.ReadAllText(path);
newContent = newContent.Remove(newContent.LastIndexOf(","));
}
}
但是,当我检查文件以查看删除的最后一个逗号时,它不起作用? 我做错了什么或者我错过了什么?
帮助表示赞赏!
注意:我正在获取原始文本文件,阅读其内容并在每行末尾添加逗号。我然后在新的文本文件中写它,但我需要摆脱最后一个逗号,因为它在SQL(文件)中运行时会导致问题
答案 0 :(得分:2)
您不需要,只需更改
File.WriteAllLines(path, File.ReadAllLines(path).Select(x => string.Format("{0},", x)));
到
File.WriteAllText(path, string.Join("," + Environment.NewLine, File.ReadAllLines(path)));
并删除其他两行。
注意:+ Environment.NewLine
在写回文件时会保持行分开,并按照评论中的建议添加。
答案 1 :(得分:1)
因为您没有将结果写回文件:
File.WriteAllText(path, newContent);
只需将文本读入内存并在程序中对其进行操作就不会自动更新从中读取文件的文件。至少可以说,这将是出乎意料的行为。
答案 2 :(得分:0)
您仅在内存中操作了文本,并且未将这些更改写入文件。
DialogResult openFile = openFileDialog1.ShowDialog();
if (openFile == DialogResult.OK)
{
Functions func = new Functions();
string file = openFileDialog1.FileName;
string content = File.ReadAllText(file);
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Text File|*.txt";
sfd.FileName = "New Text Doucment";
sfd.Title = "Save As Text File";
if (sfd.ShowDialog() == DialogResult.OK)
{
content= content.Remove(content.LastIndexOf(","));
string path = sfd.FileName;
File.WriteAllLines(path, content.Split(','));
}
}
似乎
Functions func = new Functions();
此处不需要这行代码。