1

У меня есть несколько сотен файлов .txt, из которых я хотел бы удалить строки, в которых появляется только слово "Громкость", за которым следует число. Слово "Громкость" может встречаться несколько раз в каждом текстовом файле, но я хочу удалить только те строки, где единственным текстом в этой строке является Громкость и некоторое число.

Пример строки, которую я хочу удалить:

                 Volume 158

Пример строки, которую я не хочу удалять:

  text text text Volume 158 text text text

Пожалуйста, помогите мне сделать это с помощью блокнота ++?

2 ответа2

0

То, что вы пытаетесь сделать, - это использовать сложную логику, которая будет невозможна даже в таком сложном текстовом редакторе, как Notepad++. Кроме того, ваша проблема точно не определена (например, «12.3» - это число или нет?). Только вы знаете ваши точные требования.

В зависимости от того, насколько вы технические, вы можете адаптировать следующий код C #, чтобы сделать именно то, что вы хотите. Вам понадобится Visual Studio Express или аналогичный. Конечно, вы можете написать это на другом языке или попытаться найти альтернативное решение. Обратите внимание, что код удалит строки, начинающиеся с "Громкости", даже если следующий текст не является числом. Вам нужно иметь дело именно с тем, какую обработку вы хотите. Кроме того, код касается файлов конкретно по имени. Если вы хотите просмотреть все файлы в папке, скажем, это еще одна деталь, которую вы, возможно, должны рассмотреть:

// 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 Forms, добавьте кнопку, дважды щелкните кнопку (чтобы просмотреть код в редакторе), вставьте приведенный выше код (с любыми изменениями, если необходимо), запустите код и нажмите кнопку. Удачи!

0

Используя регулярное выражение:

^\s*Volume \d+\s*$

Вы должны быть в состоянии сделать это довольно легко, заменив пустым, например,

Notepad++

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .