查找和删除字符串中的字符

时间:2013-02-18 23:01:05

标签: c# findandmodify

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

即。 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并关闭文件

非常感谢任何帮助。

谢谢!

4 个答案:

答案 0 :(得分:0)

您可以使用File.ReadAllLinesFile.WriteAllLines

示例:

读取所有行并替换每行所需的值,然后再次写入行

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

答案 1 :(得分:0)

只需打开文件并使用'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);

答案 2 :(得分:0)

从文件中读取所有内容,替换所有出现的'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();

答案 3 :(得分:0)

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

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();

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