PDA

Показать полную графическую версию : Отредактировать текстовый файл


login
15-01-2014, 17:05
Помогите пожалуйста отредактировать автоматически текстовик.
Исходный вид:

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|

Заранее спасибо

Iska
15-01-2014, 18:07
По каким принципам?

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 годы" (кредиторская задолженность)

login
16-01-2014, 08:11
([ЁёА-Яа-я\h]+) »

А если в тексте встречаются спец символы, как быть? (кавычки, запятые,тире и тп)

madmasles
16-01-2014, 08:45
А если в тексте встречаются спец символы »Вы пример дали, я с ним и работал.

login
16-01-2014, 08:59
Огромное вам спасибо за проделанную работу!
Но подскажите уж, пожалуйста, как сделать, чтобы обрабатывались все символы.

madmasles
16-01-2014, 09:02
login,
Дайте пример всех возможных строк - не чисел.

login
16-01-2014, 09:05
Субвенции бюджетам городских округов на выполнение передаваемых полномочий субъектов Российской Федерации по выплате социального пособия на погребение, установленного статьей 10 Федерального закона от 12 января 1996 года № 8-ФЗ "О погребении и похоронном деле"

Прочие субсидии бюджетам городских округов на реализацию подпрограммы "Модернизация автотранспортного комплекса Пензенской области (2011-2013 годы)" долгосрочной целевой программы "Повышение безопасности дорожного движения, развитие территориальной сети автомобильных дорог и транспортного комплекса Пензенской области на 2011-2014 годы" (кредиторская задолженность)

madmasles
16-01-2014, 09:14
login,
Я поменял код в своем первом сообщении.

На будущее - даете пример текста(файла) для обработки, включайте в него все возможные комбинации символов.

login
16-01-2014, 10:31
Спасибо. Все получилось.

login
16-01-2014, 11:51
А помогите, пожалуйста, еще доделать один момент:

В конечном виде в позицию помеченную _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|

Iska
16-01-2014, 12:53
если длинна Текстового поля превышает 255, »
Может быть, всё-таки — «превышает 254»?

madmasles
16-01-2014, 12:55
но с условием обрезки его до длинны 254 символа, если длинна Текстового поля превышает 255, и не обрезать, если длинна менее 255. »А если ровно 255? :)

Я поменял код в своем первом ответе.




© OSzone.net 2001-2012