поиск и замена

Russian main discussion
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh wrote:...а вот выделенный текст не подхватится.
Это к QSearch::DialogSwitcher.

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

Всем доброго времени суток. Уже который день бьюсь. Есть строчка

Code: Select all

address="938503" date="1260012216000" type="1" subject="null" body="лол" toa="null" sc_toa="null" service_center="null" read="1" status="-1" />
к ней перед /> ,после status="-1" надо вставить

Code: Select all

locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="(Unknown)"
пробовал что то сделать в SearchReplace.js

Code: Select all

Что: address="(\d+)" date="1260012216000" type="1" subject="null" body="лол" toa="null" sc_toa="null" service_center="null" read="1" status="-1" (\d+)/>\n 
Чем: address=" $1" date="1260012216000" type="1" subject="null" body="лол" toa="null" sc_toa="null" service_center="null" read="1" status="-1" $2/>\n 
но что то получился бред,как получить результат не знаю
Помогите пожалуйста. Заранее спасибо

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

mihanus_sa
Что:

Code: Select all

status="-1" />
Чем:

Code: Select all

status="-1" locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="(Unknown)" />
:)

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

Instructor wrote:mihanus_sa
Что:

Code: Select all

status="-1" />
Чем:

Code: Select all

status="-1" locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="(Unknown)" />
:)
проблема в том,что определённому

Code: Select all

address="938503"
своё

Code: Select all

locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="(Unknown)"
но есть много повторяющихся address, и как сделать чтобы к

Code: Select all

address="1234"

добавлялось

Code: Select all

locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="человек"
а к

Code: Select all

address="6789"

добавлялось

Code: Select all

locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="животное"

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

mihanus_sa
SearchReplace.js with Regular expressions:
Что:

Code: Select all

(address="\d+" date="1260012216000" type="1" subject="null" body="лол" toa="null" sc_toa="null" service_center="null" read="1" status="-1" )(/>)
Чем:

Code: Select all

$1locked="0" date_sent="1349140127000" readable_date="02.10.2012 5:08:55" contact_name="(Unknown)"$2

Offline
Posts: 18
Joined: Thu Nov 29, 2012 11:55 am

Post by shveicar »

Здравствуйте.
Вопрос следующий:
Можно ли с помощью регулярных выражений в AkelPad - организовать приращивание значения по счетчику?
Например, - в тексте много фрагментов вида image_56784.jpg, image_994422.jpg и других подобных. Их можно обозначить в поиске одной фразой -

Code: Select all

image_([0-9]+).jpg
а в замене нужно, чтобы каждый попадающийся фрагмент увеличивался на 1 - то есть: первый попавшийся фрагмент заменялся на image_001.jpg
Второй попавшийся фрагмент на image_002.jpg и так далее - до конца текста.
Спасибо.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

shveicar
SearchReplace.js, для «заменить все»:
Что: image_([0-9]+)\.jpg
Чем: var f = arguments.callee; var i = f.i || 0; f.i = ++i; return "image_" + "000".substr(String(i).length) + i + ".jpg";
[v] Заменять на функцию

Или
Чем: if(typeof _counter == "undefined") _counter = 0; var i = ++_counter; return "image_" + "000".substr(String(i).length) + i + ".jpg";
Но для сброса счетчика надо переоткрывать диалог замены.

Offline
Posts: 18
Joined: Thu Nov 29, 2012 11:55 am

Post by shveicar »

Infocatcher
Спасибо за помощь, только с текущим фрагментом

Code: Select all

MIME-Version: 1.0
Content-Type: application/octet-stream; name="pack.txt.7Z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pack.txt.7Z"

N3q8ryccAAOj4tJjxgEAAAAAAABSAAAAAAAAAKhEe1YAHhsJI+D3tYaOIDoMltif9p+czMeDVxmK
xX85VQYnFaGey4Navv6qXFGyqkdPJcRy5LxPA2cmxsOzrbJ5POOX39NutJYAD1wnjkdCH2uNpVcF
yHzLuO4+p2r+AKMzlw2uyMfD6BKx50Z0Z+jobQZ9ty0ij6zZcMwbse/oIpVvbAWH4JRJWkidVs7e
LBacJLIucDW9N/h6YXsZPF+jmTvtiqrYatjvn90s8hCVIXw+n5kwVtgYQraktsnM3njhC2CJHJ54
DnIIo8IILPkiW5ie3/ku5nFRLQodjMNSHc24HaKhfqpJPOrK/8bM6tXIA+gRhXpi6qc6jTxoe80L
cq6eMwE+nQPv9VblBLnBHsBEJsIKya4Hvcq/d4DB+NfdjdcWGtIGrmC4mIUrpiYBsxAV+TsSsVEx
0bYOSCGdzH4xJ7jJrrtQvin53yI/9nbuXcHjP/sSRtHcqXmiO2S8MpSyS6o8IaYdcPo4zw7sRtKi
1ddMBTifPmVeJ++H1VZMSwccOhrcrR3OD/dZ7b5vlV+x5CEpoILFz/3ruyRrsmkPEbvRpf8bibMj
cXlfaffqiiApWhri72JVLoZK2aP7u5CpYGc6escAAQQGAAEJgcYABwsBAAEjAwEBBV0AAAEADJCF
AAgKAVlqI0QAAAUBERMAQgQ1BEEEQgQuAHQAeAB0AAAAFAoBAJ49axg6zs0BFQYBACAAAAAAAA==
не срабатывает - выдает 0 замен. ,возможно дело в обрамляющих символах(" < и др)?
по аналогии с примером:
поиск

Code: Select all

files/([0-9]+)\.jpg 
замена:

Code: Select all

var f = arguments.callee; var i = f.i || 0; f.i = ++i; return "files/" + "000".substr(String(i).length) + i + ".jpg";

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

shveicar
У меня 51 замена.
Там случайно пробел после «что» не скопировался?

Offline
Posts: 18
Joined: Thu Nov 29, 2012 11:55 am

Post by shveicar »

Infocatcher wrote: Там случайно пробел после «что» не скопировался?
Дело было в знаке \ перед.jpg - Убрал его, - и все заработало.
Большое спасибо.

Offline
Posts: 18
Joined: Thu Nov 29, 2012 11:55 am

Post by shveicar »

Здравствуйте.
Нужна помощь, - необходимо
Заменить каждый найденные фрагмент в документе html - вида alt"=1-999", alt"=2-999", alt"=3-999" и т.д
на строки из файла списка типа например:

Code: Select all

1 природа(1).jpg
2 природа(2).jpg
3 Природа(3).jpg
То есть, каждая первая цифра в начале строки, - замениться на соответствующую в теге

Code: Select all

alt"=
а значение -999 будет удалено.
Видимо опять нужно задействовать скрипт SearchReplace.js...
Или есть - какие либо другие решения?
P.s главное, - чтобы поддерживалась обработка всех открытых документов..
Спасибо.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Впринципе это выполнимо с помощью SearchReplace.js, но очень криво. И будет очень медленно(ибо будет выполнятся чтение файла с именами при каждой замене). Нужно писать скрипт. Разве что таких имен у вас совсем чуть-чуть(не более двух десятков, и при этом из файлика придется вручную перенести и переформатировать список в строку замены) - тогда есть шанс что не запутаетесь в строке замены. Либо просим автора доделать скрипт: добавить процедуру преинициализации поиска.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre wrote:(ибо будет выполнятся чтение файла с именами при каждой замене)
Не обязательно:
Что: alt="[^"]+"
Чем:

Code: Select all

var f = arguments.callee; if(!f.i) { f.i = 0; f.lines = AkelPad.ReadFile("D:\\names.txt").split(/\r\n?|\n\r?/); } return 'alt="' + f.lines[f.i++ % f.lines.length] + '"';
Можно даже сделать по аналогии с предыдущим вариантом для Найти/Заменить (где проверка через typeof и объявление переменной без var), только он менее удобный, по-моему.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Infocatcher
Оно то так, но согласитесь как-то совсем не удобно, не говорю уже что не шарящему в ECMA совсем не понятно. Вот было бы поле для одноразовой/по требованию пре-инициализации, вот тогда было бы супер.

Offline
Posts: 18
Joined: Thu Nov 29, 2012 11:55 am

Post by shveicar »

Infocatcher
Спасибо, только не получается - как понял принцип замены, - такой же, как в предыдущем примере(замена на функцию), путь к файлу естественно свой, только путь к диску, так и должен быть с двойным обратным слешом(D:\\) Или здесь используется другой скрипт?. В общем ноль замен...
Post Reply