powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Замена подстрок
29 сообщений из 29, показаны все 2 страниц
Замена подстрок
    #34809569
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли стандартными средствами каше заменять подстроки разной длины,
например 'aa' на 'bbbb'?
...
Рейтинг: 0 / 0
Замена подстрок
    #34809808
Сашок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замена с использованием традиционных $extract или $piece. Вот пример для $piece:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USER>s s1="shajdhjaaaueqiiwquaaaqq1"
 
USER>s s2="aaa"
 
USER>s s3="BBBBB"
 
USER>s s4=""
 
USER>f i= 1 : 1 :$l(s1,s2) s $p(s4,s3,i)=$p(s1,s2,i)
 
USER>w
 
i= 3 
s1="shajdhjaaaueqiiwquaaaqq1"
s2="aaa"
s3="BBBBB"
s4="shajdhjBBBBBueqiiwquBBBBBqq1"
Искомая строка s2 в качестве разделителя в исходной строке s1. В результате s4 получает части s1 с новым разделителем s3.
...
Рейтинг: 0 / 0
Замена подстрок
    #34809861
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, я так и думал.
Была надежда, что это можно сделать одним оператором...
...
Рейтинг: 0 / 0
Замена подстрок
    #34810218
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно одним оператором $TRANSLATE

Performs character-for-character replacement within a string.
$TRANSLATE(string,identifier,associator)

пример

DELTA>w $TR("aaabbbccc","bbb","ddd")
aaadddccc
...
Рейтинг: 0 / 0
Замена подстрок
    #34810231
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRoverможно одним оператором $TRANSLATE

Performs character-for-character replacement within a string.
$TRANSLATE(string,identifier,associator)

пример

DELTA>w $TR("aaabbbccc","bbb","ddd")
aaadddccc

Угу - а дока по $TR вас не смущает ?
Код: plaintext
1.
2.
USER>w $TR("aaabbbccc","bbb","abc")
aaaaaaccc
...
Рейтинг: 0 / 0
Замена подстрок
    #34810253
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptn LenRoverможно одним оператором $TRANSLATE

Performs character-for-character replacement within a string.
$TRANSLATE(string,identifier,associator)

пример

DELTA>w $TR("aaabbbccc","bbb","ddd")
aaadddccc

Угу - а дока по $TR вас не смущает ?
Код: plaintext
1.
2.
USER>w $TR("aaabbbccc","bbb","abc")
aaaaaaccc


хм.. а почему он так делает?!
...
Рейтинг: 0 / 0
Замена подстрок
    #34810302
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что вы не читаете документацию видимо .... $TR заменяет :

1-й символ из аргумента2 на 1-й символ из аргумента3
2-й символ из аргумента2 на 2-й символ из аргумента3
...
n-й символ из аргумента2 на n-й символ из аргумента3
...
Рейтинг: 0 / 0
Замена подстрок
    #34810318
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRoverа почему он так делает?!
Сволочь патамушта

А так вообще забивает
Код: plaintext
1.
VERS>w $TR("aaabbbccc","b","abcdf")
aaaaaaccc
...
Рейтинг: 0 / 0
Замена подстрок
    #34810324
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы используем вот такую функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Trans(Str,Sub1,Sub2)
 N str,i,r
 Q:Str'[Sub1 Str
 s Sub2=$G(Sub2)
 S r=""
 S str=""
 F i= 1 : 1 :$L(Str,Sub1) S str=str_r_$P(Str,Sub1,i),r=Sub2
 Q str
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Замена подстрок
    #34812854
Сашок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa , а зачем в цикле присваивать r=Sub2 ?
и S str=str_r_ в данном случае тот же set $p(str,r,... = $P(Str,Sub1,i) - так ведь?
;-)
Речь IMHO о том, что создает проблему отсутствие в Cache' regexp.
...
Рейтинг: 0 / 0
Замена подстрок
    #34813034
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программы делают в принципе одно и то же, но например для меня было открытием, что $piece можно использовать так.
Еще про возможность присваивание я догадывался, но что $P сам при необходимости создает разделители - удивило и порадовало.
...
Рейтинг: 0 / 0
Замена подстрок
    #34813219
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сашок krvsa , а зачем ...
Твой вариант с $p() у нас был изначально... Но он "пропускал" какую-то ситуачию, уже не помню какую...
Вот потому-то и "родился" этот вариант.

Блок А.Н. , $p() в сравнении с $tr() просто пацан!
...
Рейтинг: 0 / 0
Замена подстрок
    #34813919
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да какая разница :)) все равно внешнюю функцию/макрос использовать
...
Рейтинг: 0 / 0
Замена подстрок
    #34814064
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде помнится когда-то говорили еще на yahoo\cache_ru вроде о возможности создания своих операторов. Только тогда это было неинтересно, а сейчас не смог найти.
...
Рейтинг: 0 / 0
Замена подстрок
    #34814120
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://karataev.nm.ru/zzcmd.html ?
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST
...
Рейтинг: 0 / 0
Замена подстрок
    #34814269
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно, спасибо!
...
Рейтинг: 0 / 0
Замена подстрок
    #34814287
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где же "оно"? Тут описан процесс создания команд, но не операторов. ИМХО, фича полезная в основном для расширения возможности работы в командной строке, есть например хороший набор команд от George Games.
...
Рейтинг: 0 / 0
Замена подстрок
    #34814326
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, я имел ввиду именно команды.

А как вы представляете себе создание операторов?
Даже в С++ не все можно сделать кажется?
...
Рейтинг: 0 / 0
Замена подстрок
    #34814412
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак себе этого не представляю, если имеется в виду COS/M. Да честно говоря об этом и не спрашивал :) Мы активно пользовались аппаратом создания своих ZZ-функций и ZZ-системных переменных, но в основном в связи с переносом приложений из MSM в Cache. В других ситуациях от них, ИМХО, толку мало - такой же функционал можно реализовать через $$-функции.
А так - только лишняя работа интерпретатору во время выполнения кода.
...
Рейтинг: 0 / 0
Замена подстрок
    #34814472
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, и правда чего-то я поторопился.
Не оно. Или я чего-то не понял

Я имел ввиду сделать что-то вроде s x=$ZZREPL(a,b,c)
но без громоздкого вызова типа s x=$$repl^utils(a,b,c) и без поключения макросов.
...
Рейтинг: 0 / 0
Замена подстрок
    #34815768
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMXO по скорости разницы нет ... не нравится "громоздкость" ну дык

Код: plaintext
1.
2.
3.
4.
5.
6.
 s x=$ZZREPL(a,b,c)

// vs

#define ZZREPL(%a,%b,%c) $$repl^utils(%a,%b,%c)
 s x=$$$ZZREPL(a,b,c)
...
Рейтинг: 0 / 0
Замена подстрок
    #34816477
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синтаксис $$$ не нравится чисто эстетически.
Да и инклуды придется делать во все программы, где это нужно.
А хотелось бы так, что бы сделать оператор и забыть, откуда он взялся :-)
...
Рейтинг: 0 / 0
Замена подстрок
    #34816562
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Блок А.Н.Можно ли стандартными средствами каше заменять подстроки разной длины,
например 'aa' на 'bbbb'?

В версии Cache 2007.2 добавлена команда "Replace" (для COS,SQL), которая делает то, что Вам надо.

PS: Жаль, что не сделали ее раньше, но лучше поздно, чем никогда.
...
Рейтинг: 0 / 0
Замена подстрок
    #34816599
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У же Cache 2007.2! Мы за вами не поспеваем
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Замена подстрок
    #34816880
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Синтаксис $$$ не нравится чисто эстетически.
Да и инклуды придется делать во все программы, где это нужно.
А хотелось бы так, что бы сделать оператор и забыть, откуда он взялся :-)

Тогда оставьте тот код который был раньше ... наподобие работает - не трогай

Ну или как нам тут подсказывают на 2007.2 :))
...
Рейтинг: 0 / 0
Замена подстрок
    #34816899
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сайте о 2007.2 ни слово - REPLACE есть и 2007.1...

[cмотрить в доку] хм ... он и 5.0.5 есть ... только не в COS а в CACHE BASIC
...
Рейтинг: 0 / 0
Замена подстрок
    #34816920
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже поискал.
Нашел cache 2007.2 field test
...
Рейтинг: 0 / 0
Замена подстрок
    #34816992
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Блок А.Н.Я тоже поискал.
Нашел cache 2007.2 field test

Все верно. Сache 2007.2 Field Test 2. Только для тестирования/ознакомления. Пока не сопровождается.

на сайте о 2007.2 ни слово - REPLACE есть и 2007.1...
Тем более хорошо, что REPLACE,$REPLACE есть уже в Cache 2007.1.
...
Рейтинг: 0 / 0
Замена подстрок
    #34817632
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GuestТем более хорошо, что REPLACE,$REPLACE есть уже в Cache 2007.1.По кр. мере, в COS ее нет (ни в документации, ни по факту).
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Замена подстрок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]