Показать полную графическую версию : Отредактировать текстовый файл
Помогите пожалуйста отредактировать автоматически текстовик.
Исходный вид:
992
11301994
04
0000
130
Плата за выбросы
992
11301994
04
0000
130
Плата за выбросы
992
11301994
04
0000
130
Плата за выбросы
Конечный вид:
DKST||||20|99211301994040000130||Плата за выбросы||01.01.2014||1|01.01.2014 09:09:09|
DKST||||20|99211301994040000130||Плата за выбросы||01.01.2014||1|01.01.2014 09:09:09|
DKST||||20|99211301994040000130||Плата за выбросы||01.01.2014||1|01.01.2014 09:09:09|
Заранее спасибо
madmasles
15-01-2014, 20:12
login,
Попробуйте примерно так.Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sFile = @ScriptDir (http://autoit-script.ru/autoit3_docs/macros.htm#@scriptdir) & '\text.txt', $sTxt, $aTxt, $iUb, $sBeginStr = 'DKST||||20|', $sMiddleStr = '1', _
$sDate = '01.01.2014', $sTime = '09:09:09', $iMaxStrLen = 254
$aTxt = StringRegExp (http://autoit-script.ru/autoit3_docs/functions/StringRegExp.htm)(FileRead (http://autoit-script.ru/autoit3_docs/functions/FileRead.htm)($sFile), '([\d\r\n]+)(?<=[\r\n])([ЁёА-Яа-я].+?)(?=[\r\n]|$)', 3)
$iUb = UBound (http://autoit-script.ru/autoit3_docs/functions/UBound.htm)($aTxt)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) (Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) $iUb) Or (http://www.autoitscript.com/autoit3/docs/keywords.htm#Or) (Mod (http://autoit-script.ru/autoit3_docs/functions/Mod.htm)($iUb, 2)) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) 13
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $iUb - 1 Step (http://www.autoitscript.com/autoit3/docs/keywords.htm#Step) 2
$sTxt &= StringFormat (http://autoit-script.ru/autoit3_docs/functions/StringFormat.htm)('%s%s||%s|%s|%s||%s|%s %s|\r\n', $sBeginStr, StringRegExpReplace (http://autoit-script.ru/autoit3_docs/functions/StringRegExpReplace.htm)($aTxt[$i], '[^\d]', ''), _
StringLeft (http://autoit-script.ru/autoit3_docs/functions/StringLeft.htm)($aTxt[$i + 1], $iMaxStrLen), $aTxt[$i + 1], $sDate, $sMiddleStr, $sDate, $sTime)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
$sTxt = StringTrimRight (http://autoit-script.ru/autoit3_docs/functions/StringTrimRight.htm)($sTxt, 2)
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)($sTxt & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))
text.txt:992
11301994
04
0000
130
Плата за выбросы
992
11301994
04
0000
130
Субвенции бюджетам городских округов на выполнение передаваемых полномочий субъектов Российской Федерации по выплате социального пособия на погребение, установленного статьей 10 Федерального закона от 12 января 1996 года № 8-ФЗ "О погребении и похоронном деле"
992
11301994
04
0000
130
Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети автомобильных дорог и транспортного комплекса Пензенской области на 2011-2014 годы" (кредиторская задолженность)
([ЁёА-Яа-я\h]+) »
А если в тексте встречаются спец символы, как быть? (кавычки, запятые,тире и тп)
madmasles
16-01-2014, 08:45
А если в тексте встречаются спец символы »Вы пример дали, я с ним и работал.
Огромное вам спасибо за проделанную работу!
Но подскажите уж, пожалуйста, как сделать, чтобы обрабатывались все символы.
madmasles
16-01-2014, 09:02
login,
Дайте пример всех возможных строк - не чисел.
Субвенции бюджетам городских округов на выполнение передаваемых полномочий субъектов Российской Федерации по выплате социального пособия на погребение, установленного статьей 10 Федерального закона от 12 января 1996 года № 8-ФЗ "О погребении и похоронном деле"
Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети автомобильных дорог и транспортного комплекса Пензенской области на 2011-2014 годы" (кредиторская задолженность)
madmasles
16-01-2014, 09:14
login,
Я поменял код в своем первом сообщении.
На будущее - даете пример текста(файла) для обработки, включайте в него все возможные комбинации символов.
А помогите, пожалуйста, еще доделать один момент:
В конечном виде в позицию помеченную _X_X_:
DKST||||20|99211301994040000130|_X_X_|Текстовое поле||01.01.2014||1|01.01.2014 09:09:09|
Нужно вставить тоже самое Текстовое поле, но с условием обрезки его до длинны 254 символа, если длинна Текстового поля превышает 255, и не обрезать, если длинна менее 255.
Например: "Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети автомобильных дорог и транспортного комплекса Пензенской области на 2011-2014 годы" (кредиторская задолженность)"
- 367 символов, нужно обрезать до 254:
"Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети"
и вставить в поле _X_X_
ИТОГ:
DKST||||20|99211301994040000130|Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети|Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети автомобильных дорог и транспортного комплекса Пензенской области на 2011-2014 годы" (кредиторская задолженность||01.01.2014||1|01.01.2014 09:09:09|
если длинна Текстового поля превышает 255, »
Может быть, всё-таки — «превышает 254»?
madmasles
16-01-2014, 12:55
но с условием обрезки его до длинны 254 символа, если длинна Текстового поля превышает 255, и не обрезать, если длинна менее 255. »А если ровно 255? :)
Я поменял код в своем первом ответе.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC