Автор Тема: Вставить в текстовый файл текстовые и числовые значения  (Прочитано 2564 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Latoid [?]

  • Новичок
  • *
  • Сообщений: 92
  • Репутация: 11
    • Награды
Здравствуйте.
есть файл pdf_template.fdf такой структуры:
%FDF-1.2
%вгПУ
1 0 obj
<<
/FDF
<<
/Fields [
<<
/V ()
/T (d1_Sender_Name)
>>
<<
/V ()
/T (d2_Sender_Name)
>>
<<
/V ()
/T (d1_Sender_Street)
>>
<<
/V ()
/T (d2_Sender_Street)
>>
<<
/V ()
/T (d1_Sender_Postal_Index)
>>
<<
/V ()
/T (d2_Sender_Postal_Index)
>>
<<
/V ()
/T (d1_Sender_City)
>>
<<
/V ()
/T (d2_Sender_City)
>>]
>>
>>
endobj
trailer

<<
/Root 1 0 R
>>
%%EOF

Необходимо вставить в скобки после /V необходимые значения (может быть как число, так и текст)

Написал вот так:
Код: AutoIt [Выделить]
$hTemplate = FileOpen (@ScriptDir & "\pdf_template.fdf")
$sTemplateString = FileRead ($hTemplate)
FileClose ($hTemplate)

;~ ConsoleWrite ($sTemplateString & @CRLF)

$sTemplateString = StringRegExpReplace ($sTemplateString, "(<<\n/V\s\(+)(.*)(\)\n/T\s\(d\d{1}_Sender_Name\)\n>>+)", "$1" & "Иванов" & "$3")

$sTemplateString = StringRegExpReplace ($sTemplateString, "(<<\n/V\s\(+)(.*)(\)\n/T\s\(d\d{1}_Sender_Street\)\n>>+)", "$1" & "ул. Есенина, дом 31" & "$3") ; тут съедает первую букву 'у'

$sTemplateString = StringRegExpReplace ($sTemplateString, "(<<\n/V\s\(+)(.*)(\)\n/T\s\(d\d{1}_Sender_Postal_Index\)\n>>+)", "$1" & "123456" & "$3") ; здесь съедает полностью все что в $1

$sTemplateString = StringRegExpReplace ($sTemplateString, "(<<\n/V\s\(+)(.*)(\)\n/T\s\(d\d{1}_Sender_City\)\n>>+)", "$1" & "Красноярск" & "$3")

ConsoleWrite ("========" & @CRLF)
ConsoleWrite ($sTemplateString & @CRLF)
exit
 


Прошу, поправьте регэксп

Русское сообщество AutoIt


Помечен как лучший ответ пользователем Latoid Отправлен Июль 26, 2015, 07:00:50

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7808
  • Репутация: 2281
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Код: AutoIt [Выделить]
$sTemplate = @ScriptDir & "\pdf_template.fdf"
$sTemplateString = FileRead($sTemplate)

_Replace($sTemplateString, 'Name', 'Иванов')
_Replace($sTemplateString, 'Street', 'ул. Есенина, дом 31')
_Replace($sTemplateString, 'Postal_Index', '123456')
_Replace($sTemplateString, 'City', 'Красноярск')

ConsoleWrite("========" & @CRLF)
ConsoleWrite($sTemplateString & @CRLF)

Func _Replace(ByRef $sStr, $sSender, $sReplace)
    $sStr = StringRegExpReplace($sStr, '(<<\R/V\h\()(.*)(\)\R/T\h\(d\d_Sender_' & $sSender & '\)\R>>)', '${1}' & $sReplace & '$3')
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
3631 Просмотров
Последний ответ Октябрь 28, 2009, 23:02:09
от glich
11 Ответов
5908 Просмотров
Последний ответ Апрель 17, 2010, 01:16:57
от CreatoR
0 Ответов
2524 Просмотров
Последний ответ Апрель 17, 2010, 00:27:51
от CreatoR
1 Ответов
3103 Просмотров
Последний ответ Март 02, 2011, 16:04:48
от Yashied
5 Ответов
4869 Просмотров
Последний ответ Декабрь 02, 2011, 15:25:10
от neobi
3 Ответов
6494 Просмотров
Последний ответ Декабрь 28, 2011, 12:04:44
от madmasles
4 Ответов
3867 Просмотров
Последний ответ Апрель 23, 2012, 20:33:48
от forfrends
2 Ответов
1878 Просмотров
Последний ответ Февраль 17, 2013, 13:04:46
от Ed_Vard
4 Ответов
2777 Просмотров
Последний ответ Июнь 10, 2013, 14:34:54
от WSWR
1 Ответов
1599 Просмотров
Последний ответ Май 30, 2014, 03:03:20
от Garrett