【问题标题】:Find and Delete Characters in String查找和删除字符串中的字符
【发布时间】:2013-02-18 23:01:05
【问题描述】:

我的程序读取注册表项值并将这些值与安装路径结合起来。我还从注册表中读取了安装路径。

String dllInstpath = installPath + rKey 等于: C:\Program Files (x86)\NSi\AutoStore Workflow 6\HpOXPdCaptureRes.dll

然后我在上面的字符串上使用FileVersionInfo 从它的安装路径中获取HpOXPdCaptureRes.dll 的文件信息并将所有值写入记事本。

我的问题是 TRUE dll 名称在文件名中没有“Res”。注册表只有文件名中带有“Res”的文件名。我需要做的是从文本文件中读取并找到所有“Res”并将它们从记事本文件中的文本行中删除。

所以输出应该是这样的:

当前: HpOXPdCaptureRes.dll

新: HpOXPdCapture.dll

我已在线阅读,我认为最好的方法是使用ReadAllLinesWriteAllLines。但是我不确定如何实现查找和替换。我已经看到很多关于如何删除空格、无效字符等的示例,但我一直无法找到我需要的示例。

总结:

  • 读取文本文件
  • 在所有文本行中删除 Res 并删除
  • 保留当前文本文件,即删除Res并关闭文件

非常感谢任何帮助。

谢谢!

【问题讨论】:

标签: c# findandmodify


【解决方案1】:

您可以使用File.ReadAllLinesFile.WriteAllLines

例子:

读取所有行并在每一行替换您想要的值,然后再次写入行

File.WriteAllLines("textFilePath",File.ReadAllLines("textFilePath").Select(line => line.Replace("Res.dll", ".dll")));

【讨论】:

    【解决方案2】:

    只需打开文件并使用“File.ReadAllLines”读取所有行。然后用Replace去掉Res

    string[] lines = File.ReadAllLines("yourFileName");
    var output = lines.Select(x => x.Replace("Res.dll", ".dll")).ToArray();
    

    要稍后将它们保存回来,您可以使用File.WriteAllLines

    File.WriteAllLines("yourFileName", output);
    

    【讨论】:

      【解决方案3】:

      从文件中读取所有内容,替换所有出现的“res”并写入文件:

              String filename = "fileName";
      
              StreamReader sr = new StreamReader(filename);
              String content = sr.ReadToEnd();
              sr.Close();
      
              StreamWriter sw = new StreamWriter(filename);
              sw.Write(content.Replace("res", ""));
              sw.Close();
      

      【讨论】:

        【解决方案4】:

        如果您要替换的字符串保证在字符串中是唯一的 - 例如字符串末尾的“res.dll” - 那么您可以使用String 类的Replace 方法进行替换:

        List<string> lines = File.ReadAllLines(sourceFile);
        lines = lines.select(l => l.Replace("res.dll", ".dll").ToList();
        

        或者如果区分大小写是一个问题:

        lines = lines.Select(l => l.Substring(l.Length - 7).ToLower() == "res.dll" ? l.Substring(0, l.Length - 7) + ".dll" : l).ToList();
        

        对于更复杂的情况,您可能需要使用正则表达式来标识要替换的字符串部分。或者您可能想要拆分字符串 int 路径和文件名,修改文件名并将其重新连接在一起。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-03
          • 2015-11-28
          • 1970-01-01
          • 2019-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多