我的程序读取注册表项值并将这些值与安装路径组合在一起。我还从注册表中读取了安装路径。
即。 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
我已在网上阅读,我认为最好的方法是使用ReadAllLines
和WriteAllLines
。但是我不确定如何实现查找和替换。我已经看到很多关于如何删除空格,无效字符等的例子,但是我找不到我需要的例子。
要点:
Res
,然后移除Res
并关闭文件非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
您可以使用File.ReadAllLines
和File.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();
对于更复杂的情况,您可能需要使用正则表达式来标识要替换的字符串部分。或者您可能希望将字符串拆分为路径和文件名,修改文件名并将其重新连接在一起。