Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / функция которая меняет стринг в строке на другой стринг / 18 сообщений из 18, страница 1 из 1
10.12.2008, 15:11
    #35705654
Alex Bizi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Здравствуйте.
Подскажите пожалста , есть ли в Каше функция которая меняет стринг в строке на другой стринг.
Не предлагать $tr он не помогает.
Вот пример:
стринг: \\198.34.51.61\kuku\nana
на стринг: \\198.34.51.1\kuku\nana (поменял 61 -> 1)

Написать сам чтото такое не трудно, просто стыдно, что великий Каше не дал такую опцию

Спасибо
...
Рейтинг: 0 / 0
10.12.2008, 15:16
    #35705684
ceshka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Alex Bizi, я не видел
...
Рейтинг: 0 / 0
10.12.2008, 15:37
    #35705779
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Используем вот такую функцию


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Trans(Str,Sub1,Sub2)                  ; В строке 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 (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
10.12.2008, 15:47
    #35705820
Alex Bizi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Значит нет такой функции...
Спасибо
...
Рейтинг: 0 / 0
10.12.2008, 16:19
    #35705959
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Alex BiziЗначит нет такой функции...
Спасибо
Не спешите с выводами.
Код: plaintext
1.
2.
>w $replace("\\198.34.51.61\kuku\nana","61","1")
>\\ 198 . 34 . 51 . 1 \kuku\nana
$REPLACE
...
Рейтинг: 0 / 0
10.12.2008, 16:27
    #35705996
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
У меня нету $REPLACE...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
10.12.2008, 16:38
    #35706034
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
krvsaУ меня нету $REPLACE...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
Эта функция появилась в версии 2008.1
...
Рейтинг: 0 / 0
10.12.2008, 16:48
    #35706075
Alex Bizi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
спасибо всем.
...
Рейтинг: 0 / 0
10.12.2008, 19:51
    #35706616
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Знать нам еще не скоро ее юзать...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
11.12.2008, 04:34
    #35707083
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
У нас пользуются $FIND
$FIND(string,substring,position)

делают так:
TR(c,c1,c2,n)
N b,b0
I c1'="" F Q:n=0 S b=$F(c,c1,b0) Q:'b D
.S $E(c,b-$L(c1),b-1)=c2,b0=b-$L(c1)+$L(c2) S:n'="" n=n-1
Q c

Великий Cache занят стратегическими задачами :)
...
Рейтинг: 0 / 0
11.12.2008, 08:19
    #35707139
Socratdv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Есть такая функция strrep в %stringreplace.inc

Делаем в программах и классах так:
Код: plaintext
1.
2.
3.
4.
5.
#Include %stringreplace

s str="\\198.34.51.61\kuku\nana"
s str2=$$strrep(str,"61","1")
w str2
Получаем:
\\198.34.51.1\kuku\nana
...
Рейтинг: 0 / 0
11.12.2008, 08:33
    #35707152
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Можно так (делает только одну замену)
Код: plaintext
1.
2.
3.
4.
5.
s s1="\\198.34.51.61\kuku\nana"
s s2="61"
s s3="1"
s:$f(s1,s2) $e(s1,$f(s1,s2)-$l(s2),$f(s1,s2)- 1 )=s3
w s1
...
Рейтинг: 0 / 0
11.12.2008, 09:35
    #35707229
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
 set s1="\\198.34.51.61\kuku\nana"
 set s2="61"
 set s3="1"
 // активная часть кода
 set s11=$PIECE(s1,s2, 1 )_s3_$PIECE(s1,s2, 2 )
 //
 write "исходная: ",s1,!,"результирующая: ",s11

Дальше можно развивать для множественных замен в строке, используя функцию поиска количества вхождений требуемой замены.
...
Рейтинг: 0 / 0
11.12.2008, 09:40
    #35707237
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Вот только не

Код: plaintext
$PIECE(s1,s2, 2 )

а

Код: plaintext
$PIECE(s1,s2,$l(s1,s2))

Т.е. читать нужно доконца, а не просто второе слово...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
11.12.2008, 10:04
    #35707292
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
krvsa,
Я специально привел именно такой пример, может понадобться разбирать все вхождения, чтобы у человека была возможность развивать свою собственную мысль. А может нужно заменить толь пятое вхождение.

А вместо
Код: plaintext
$PIECE(s1,s2,$l(s1,s2))
лучше тогда использовать
Код: plaintext
$PIECE(s1,s2, 1000 )
...
Рейтинг: 0 / 0
11.12.2008, 10:06
    #35707297
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
AlexKB,
ой пардон

Код: plaintext
$PIECE(s1,s2, 2 , 1000 )
...
Рейтинг: 0 / 0
11.12.2008, 10:13
    #35707315
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
Опять же, может стоит делать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
 set s1="\\198.34.51.61\kuku\nana"
 set s2="198.34.51.61"
 set s3="198.34.51.1"
 // активная часть кода
 set s11=$PIECE(s1,s2, 1 )_s3_$PIECE(s1,s2, 2 , 1000 )
 //
 write "исходная: ",s1,!,"результирующая: ",s11

чтобы обезопасить себя от непредвиденных совпадений
...
Рейтинг: 0 / 0
11.12.2008, 13:32
    #35708071
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая меняет стринг в строке на другой стринг
AlexKBой пардон
Я тоже лоханулся с последним параметром... Но лучше вместо "больших чисел" точно указывать количество слов с неким разделителем.
Т.к. у нас был некий "умелец", таки он посчитал что 999 цифра тааакая большая что ее хватит на все случаи жизни. А вот не хватило!
У вас правда цифека поболе будет... Но смысл от этого не меняется. Можно конечно списать на некое "русское" программирование... Но зачем это?
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / функция которая меняет стринг в строке на другой стринг / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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