У меня есть большой текстовый файл, который мне нужно проверить по строкам и соответствующим образом изменить. Я ищу строки, начинающиеся с DTP * 348 * D8 * yyyymmdd (yyyymmdd будет заполняться фактическими датами в файле). Если линия попадает между строками REF * 1L * 0002 и REF * 1L * 0011, я хочу, чтобы все даты до 20140601 были изменены до 20140601 (любые даты позже 20140601 должны быть оставлены в покое). Таким образом, DTP * 348 * D8 * 20090605 станет DTP * 348 * D8 * 20140601.C#/RegEx - изменить строки в текстовом файле
Линии между REF * 1L * 0011 и REF * 1L * 0030 Я хотел бы, чтобы даты до 20140701 были изменены до 20140701, а все остальное осталось в покое. Таким образом, DTP * 348 * D8 * 20140605 станет DTP * 348 * D8 * 20140701.
Строки линии REF * 1L * xxxx встречаются несколько раз по всему файлу, но они не смешиваются. Например, как только будет достигнут первый экземпляр REF * 1L * 0011, REF * 1L * 0002 больше не будет отображаться в файле, и как только линия REF * 1L * 0030 будет достигнута, ни REF * 1L * 0002, ни REF * 1L * 0011 снова появится в файле.
Я просто смутил себя этим. Надеюсь, это имеет смысл!
EDIT: Ниже приведен пример содержимого файла.
REF*1L*0002
REF*DX*100A
REF*ZZ*00
DTP*336*D8*19990816
NM1*IL*1*XXXX*XXXXX****34*XXXXXXXX
PER*IP**TE*XXXXXXXXXX
N3*XXXXX XXXXX XXX
N4*XXXXX*XX*XXXXX
DMG*D8*19760910*F*I
HD*030**HLT*0002XXX01*XXX
DTP*348*D8*20150601 (*This is the line I want to edit*)
INS*N*19*030**A
REF*0F*XXXXXX
REF*1L*0011
(Остальная часть файла содержит строки, похожие на приведенные выше, повторяющиеся). Тип файла, с которым я работаю, называется EDI 834, если это помогает.
Что вы хотите сказать? –
Мой вопрос: как я могу выполнить то, что я описал выше, используя C# Regex.Replace? (Я предполагаю, что это то, что я буду использовать, если не будет лучшего способа). Например, я использую аналогичный подход в менее сложном файле: 'File.WriteAllText (fn, Regex.Replace (File.ReadAllText (fn), @" DTP \ * 348 \ * D8 \ * 201 [0-9] [0-9] [0-9] [0-9] [0-9] "," DTP * 348 * D8 * 20150701 "));' –
Можете ли вы предоставить образец файла в своем вопросе , поэтому мы можем видеть формат строк? – Shar1er80