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

Russian main discussion
  • Author
  • Message
Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

YuS wrote:как найти решение не имея описания или хотя бы примеров...
Знаний, кажется, просто JS достаточно. Прозвучало не очень похоже. да? :)

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Вот как пошагово срабатывает эта функция и непонятно

Code: Select all

return "ReplaceText" + arguments[0].replace(/ /g, "ReplaceText");
Предполагаю, что return ... + работает как +=
arguments[0] это, наверно, отсчитываемые от нуля элементы, отсевиваемые первым (нулевым) правилом в регэкспе.
Но что такое "/ /g" - я в тупике.
Или я не прав, а return "ReplaceText" просто в начало строки вбивает, а потом пристыковывает результаты замены?

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Lenchik
return возвращает результат функции, g - флаг поиска (искать глобально).

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Lenchik wrote:Вот как пошагово срабатывает эта функция и непонятно

Code: Select all

return "ReplaceText" + arguments[0].replace(/ /g, "ReplaceText");
Предполагаю, что return ... + работает как +=
Ну, про return уже сказали, это то, что возвращает функция, а вот:
Lenchik wrote: arguments[0] это, наверно, отсчитываемые от нуля элементы, отсевиваемые первым (нулевым) правилом в регэкспе.
Но что такое "/ /g" - я в тупике.
arguments[0].replace - это оператор замены для всех найденных аргументов, что в данном случае, является:
"/ /g" - регэксп, обозначающий пробел с глобальным модификатором.

В общем, тут, конечно, пояснения не помешали бы от автора или от тех, кто знает как это всё работает... и если не полное описание, то хотя бы
побольше примеров применения...

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

Post by KDJ »


YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

KDJ wrote:About:
Thank you!

Offline
Posts: 3
Joined: Tue Oct 07, 2014 2:21 pm

Post by mackween »

Добрый день.

Помогите пожалуйста в замене текста в строке:

address=""[diy]48" <+79093297486>" date

на вид:

address=""+79093297486>" date

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

mackween
что: "[diy]48" <"
чем: ""
если вместо 48 возможны и другие числа, то надо поставить галку "regular expressions" и использовать такое условие:
что: "\[diy\]\d+?"\s<"

Offline
Posts: 3
Joined: Tue Oct 07, 2014 2:21 pm

Post by mackween »

Drugmix wrote:mackween
что: "[diy]48" <"
чем: ""
если вместо 48 возможны и другие числа, то надо поставить галку "regular expressions" и использовать такое условие:
что: "\[diy\]\d+?"\s<"
Спасибо, но не помогло. Поточнее опишу суть.
Этот xml с СМС из WM, при переносе на андроид возникают проблемы - ответы от номеров с никами импортятся криво - отдельно от исходящих. Нужно убрать ники, они могут состоять из букв и цифр.
Пример строк:
<sms protocol="0" address=""[diy]48" <+79093297486>" date="1273950151000" type="1" body="Если оклимался после спорта - подходи )" status="-1" read="1" />

Привести надо к виду: <sms protocol="0" address=""+79093297486>" date="1273950151000" type="1" body="Если оклимался после спорта - РїРѕРґС…РѕРґРё )" status="-1" read="1" />

<sms protocol="0" address=""Валерка 100 рублей" <+79329229718>" date="1277977174000" type="1" body="Этот абонент звонил вам 3 раза. Последний - 01 июля в 00:12" status="-1" read="1" />

Это к виду <sms protocol="0" address=""+79329229718>" date="1277977174000" type="1" body="Этот абонент Р·РІРѕРЅРёР» вам 3 раза. Последний - 01 июля РІ 00:12" status="-1" read="1" />

Т.е. чтобы после adress="&quote; шел номер телефона +7... .
И еще скорее всего окончание у телефона &gt тоже не понадобится, как нужно будет искать и менять тогда? Т.е. конечный вид чтобы был address=""+79329229718;"

Прошу прощения за громоздкий ответ.

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

Post by Instructor »

mackween
Что: address=".*?<([+\d]++)>"
Чем: address=""\1;"

[v] Регулярные выражения

Offline
Posts: 3
Joined: Tue Oct 07, 2014 2:21 pm

Post by mackween »

Instructor спасибо большое!

Offline
Posts: 2
Joined: Sun Dec 07, 2014 6:57 am

Post by SaDim »

Подскажите пожалуйста!
Как заменять текст на текст+1 скажем до 5 и повторять так для всего документа. Пример:
Есть: он, он, он, он, он, он, он, он, он, он, он.
Должно стать: он1, он2, он3, он4, он5, он1, он2, он3, он4, он5, он1.

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

Post by Instructor »

SaDim
SearchReplace.js

Что: (он)
Чем: if (typeof nCount == "undefined" || nCount > 5) {nCount=1;} return $1 + (nCount++);
[v] Регулярные выражения
[v] Заменять на функцию

Offline
Posts: 2
Joined: Sun Dec 07, 2014 6:57 am

Post by SaDim »

Instructor
СПАСИБИЩЕ.
Ещё маленький вопрос?
Как из множества сплошных HEX-строк делает HEX-строки с пробелами (байт). Пример:
Есть: 4D5A90000300000004000000FFFF000000900200A801
BC45F4023570
Надо: 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 00 90 02 00 A8 01
BC 45 F4 02 35 70
В EmEditor получается с помощью ".." на "\0 ", а в AkelPad так не проходит, зачем то учитывается код окончания строк.
Drugmix, Спасибо, работает.
Last edited by SaDim on Sun Dec 07, 2014 11:05 am, edited 1 time in total.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

SaDim
что значит "зачем-то"? Нет причин, почему символы rn/lf не должны учитываться.
И да, они тоже подпадают под regex "."
Чтобы их игнорировать - надо добавить их в исключения: "[^\n\r]"
Итого шаблон для "что" получается такой: [^\n\r]{2}
[v] Регулярные выражения
Post Reply