gpt4 book ai didi

c# - 从 C# 中的文件中删除特定字符串

转载 作者:行者123 更新时间:2023-12-04 10:09:44 24 4
gpt4 key购买 nike

标题说明了一切,我有一个名为 test.txt 的文件这些内容:

Hello from th [BACK]e
This i [BACK]s line two.

在这里, [BACK]只是退格的可见表示。所以一个 i [BACK]s将意味着 is .因为退格是在 space 之后实现的和 i .

所以基本上,点击一个按钮,我应该能够访问这个文件并删除所有包含单词 [BACK] 的字符串。 -1. -1 实现是因为 [BACK]表示退格,用于删除单词 [BACK] 之前的最后一个字符串.

编辑:

这次换了 [BACK][SDRWUE49CDKAS] .只是为了使它成为一个唯一的字符串。我还在另一个文件上进行了测试。这次是 .html具有以下内容:
Alpha, Brav [SDRWUE49CDKAS]o, Charlie, Dr [SDRWUE49CDKAS][SDRWUE49CDKAS]elta, Echo.
// ^^Implementing "backspace" ^^Here doing it double because we made a mistake in spelling "Delta"
//These sentences should be Alpha, Bravo, Charlie, Delta, Echo

做了一些实验并使用以下代码对其进行了测试:
        string s = File.ReadAllText(path2html);
string line = "";
string contents = File.ReadAllText(path2html);
if (contents.Contains("[SDRWUE49CDKAS]"))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(path2html);
s = s.Remove(s.LastIndexOf(line + "[SDRWUE49CDKAS]") - 2, 15);
sw.WriteLine(s);
sw.Close();
}

上面编辑过的代码会给我一个实际删除 [SDRWUE49CDKAS] 的输出但不完全是我想要的样子:
Alpha, BraS]o, Charlie, DS]elta, Echo.

这确实引起了一些与测试的混淆。更不用说我必须运行这段代码 3 次,因为我们有 3 x [SDRWUE49CDKAS] .所以循环会很好。我在网上查了一堆类似的问题,但找不到一个有效的。我正在尝试测试 this one也。但它使用的是 StreamReader和一个 StreamWriter同时。或者我应该复制原件,并制作一个临时文件?

最佳答案

var s = "i [BACK]s";
s = s.Remove(s.IndexOf("[BACK]")-1, 1 + "[BACK]".Length);

结果是"is"。

解释:
  • 找到 [Back] 的起始索引
  • 返回一个位置以从
  • 之前的字符开始
  • 从那里删除额外的字符 + 标记字符

  • 但是有几个问题:
  • 这假设该搜索字符串不在该字符串的开头(有一个字符要删除)
  • 另外它只删除第一次出现,所以你必须重复这个直到所有都被删除
  • 它不处理“代理对”
  • 关于c# - 从 C# 中的文件中删除特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61389965/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com