我有几百个 .txt 文件,我想从中删除只出现单词“Volume”和数字的行。单词“Volume”可能在每个文本文件中出现几次,但我只想删除该行上仅有文本“Volume”和一些数字的行。
我想要删除的行的示例:
Volume 158
我不想被删除的行示例:
text text text Volume 158 text text text
请帮我使用 notepad++ 完成这个吗?
答案1
使用正则表达式:
^\s*Volume \d+\s*$
你应该能够很容易地通过替换空白来做到这一点,例如
答案2
您要做的事情涉及复杂的逻辑,即使在 Notepad++ 等高级文本编辑器中也不可能实现。此外,您的问题没有精确定义(例如,“12.3”是不是数字?)。只有您知道您的确切要求。
根据您的技术水平,您可以调整以下 C# 代码以完成您想要的操作。您需要 Visual Studio Express 或类似软件。当然,您可以用其他语言编写此代码,或者尝试寻找替代解决方案。请注意,代码将删除行开始使用“Volume”,即使以下文本不是数字。您需要处理您想要的确切处理。此外,代码专门按名称处理文件。如果您想递归文件夹中的所有文件,那么您可能需要考虑另一个细节:
// Read the file line by line
string szOriginal = @"C:\Tmp\Test.txt";
string szCopy = @"C:\Tmp\Test.txt.tmp";
StreamReader fText = new StreamReader(szOriginal);
StreamWriter fCopy = new StreamWriter(szCopy);
string szLine = string.Empty;
int nIndex = 0;
while ((szLine = fText.ReadLine()) != null)
{
// Don't copy lines starting with "Volume " (note space character)
nIndex = szLine.IndexOf("Volume ");
if (nIndex != 0)
fCopy.WriteLine(szLine);
}
fText.Close();
fCopy.Close();
// Delete original and rename copy
File.Delete(szOriginal);
File.Move(szCopy, szOriginal);
创建一个空的 Windows 窗体项目,添加一个按钮,双击该按钮(在编辑器中查看代码),粘贴上述代码(如果需要,可进行任何修改),运行代码并单击该按钮。祝你好运!
答案3
删除包含以下内容的行Volume 158
寻找:^.*(Volume 158).*$
替换为:LEAVE EMPTY
或删除包含以下两个单词之一的行Volume
或158
寻找:^.*(Volume).*$|^.*(158).*$
替换为:LEAVE EMPTY