【问题标题】:C# How to delete last 2 characters from text file and write into the same line at the end my text?C#如何从文本文件中删除最后2个字符并在我的文本末尾写入同一行?
【发布时间】:2018-10-05 12:08:13
【问题描述】:
var lines2 = File.ReadAllLines("file.path");
File.WriteAllLines("file.path", lines2.Take(lines2.Length - 2).ToArray());
using (StreamWriter db = new FileInfo("file.path").AppendText())
       db.Writeline("");

这是我删除最后两行并在新行之后写入我的文本的代码,这工作正常,

但是,我需要将最后 2 个字符删除到最后一行(文本文件只有一行)并添加到同一行,没有空格或换行,我的文本。

我尝试了几次,但都失败了。谷歌也帮不了我。

例子:

之前的文字:你好,这是一个例子!!

删除最后两个字符:你好,这是一个例子

添加到文本中:???

后面的文字:你好,这是一个例子???

我想删除最后两个字符!!并在最后一个词后面添加我想要的任何内容

【问题讨论】:

  • 真的很难理解你想要什么,你能举个例子吗
  • 感谢所有愿意帮助我的人!

标签: c#


【解决方案1】:

如果您想要做的只是剪掉一点并追加,则无需阅读所有内容。比如:

using(var fs = new FileStream("file.path"))
{
  fs.Seek(-2,SeekOrigin.End);
  var newText = Encoding.UTF8.GetBytes("new content");
  fs.Write(newText,0,newText.Length);
  fs.SetLength(fs.Position); //Only needed if new content may be smaller than old
}

(如果您对必须自己执行编码步骤不满意,您可以将SetLength() 调用移到Seek 之后立即调用,然后将FileStream 包装在适当的StreamReader 中并开始工作从那里开始)

【讨论】:

  • 同意。使用流,寻找所需的位置和写作是这个问题的最佳解决方案。
【解决方案2】:

删除最后一行的最后2个字符

你可以用这个:

string[] allLines = File.ReadAllLines("file.path");
if(allLines.Length > 0)
{
   string lastLine = allLines.Last();
   if(lastLine.Length >= 2)
   {
       lastLine = lastLine.Remove(lastLine.Length - 2);
   }
   allLines[allLines.Length - 1] = lastLine;
}

File.WriteAllLines("file.path", allLines);

【讨论】:

  • 试过你的代码,他写的是文本文件,但没有删除最后两个字符。 :( 这只是我的第二个程序,可能我做错了什么。
  • @bodyXY - 了解文件的“最后一行”是否包含行终止符(回车和/或换行)和是否应该通过此操作保留这些内容。您首先需要解决这个问题,然后编辑您的问题以明确是否是这种情况。
  • @bodyXY:你应该使用调试器看看出了什么问题。
【解决方案3】:
// Get file content
string fileContent = File.ReadAllText("file.path");
// Remove the last to characters
fileContent = fileContent.Remove(fileContent.Length - 2) + "your text...";
// Write content back to the file
File.WriteAllText("file.path", fileContent);

【讨论】:

  • @bodyXY 很高兴它成功了!请记住将我的解决方案(或另一个,如果您认为另一个更好的解决方案)标记为答案,以便人们知道您的问题已解决。
  • 与其他一些答案或潜在答案相比,这将是相当糟糕的表现......
  • @bodyXY 你应该会在答案的左侧看到一个复选标记
  • @maccettura 可能...... OP 必须做出决定。我绝对不是说我的答案是最好的,这只是对我有用的方法以及我到目前为止的做法。可能会考虑玩达米恩的答案。
【解决方案4】:

我会怎么做(我会跳过我假设你知道的步骤)

首先,获取文件的内容

第二:

string MyFileContext = MyFileContext.Substring(0, MyFileContext.Length - 2);
MyFileContext += "What you want";

三:保存:)

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多