forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Полезные функции (http://forum.boolean.name/forumdisplay.php?f=17)
-   -   "деконкатенация" (http://forum.boolean.name/showthread.php?t=47)

impersonalis 05.09.2005 19:11

Введите в param$ какие-то данные, разделённые ";" - после прокрутки цикла массив temp$ будет заполнен вашими данными:
Код:

param$=Input("")
;========
Const max_size%=40
Local temp$[max_size%]
Local c=1
For i=1 To Len(param$)
        ip=Instr(param$,";",i)
        If ip=0 ip=Len(param$)+1
        temp[c]=Mid$(param$,i,ip-i)
        i=ip
        c=c+1
Next
c=c-1
;=========
For i=1 To max_size%
        If temp[i]="" Exit
        Print temp[i]
Next
WaitKey()
End

введите
Цитата:

12;ABS;0.0.0;QQW

на выходе получите
Цитата:

12
ABS
0.0.0
QQW


BG-General 05.09.2005 19:13

Anree будет рад :)

impersonalis 05.09.2005 19:15

Забыл добавить:
в с будет хранится кол-во найденных подстрок.
Поэтому, последний цикл можно переписать:
Код:

For i=1 To c
Print temp[i]
Next


alcosholik 05.09.2005 22:55

Для справки:
Термин "конкатенация" означает объединение. Конкатенация строк - объединение двух строк в одну (часто используется в программировании). Деконкатенация строк - их разделение на две или больше.

Константин 23.05.2006 07:45

эээ... вот бы готовую функцию, такоую как Split получить

SBJoker 23.05.2006 12:53

Мдя на входе строка и список разделителей на выходе массив кусков :)

impersonalis 23.05.2006 14:20

[blitz]
Const max_size%=40

Type TMassiv
Field st$[max_size%]
Field LastE%
End Type

Function Split(param$,M.TMassiv,Dev$)
Local c=1
For i=1 To Len(param$)
ip=Len(param)
For i2=1 To Len(Dev$)
cur_dev$=Mid(Dev,i2,1)
ipt=Instr(param$,cur_dev$,i)
If ipt<ip And ipt<>0 ip=ipt
Next
If ip=Len(param) ip=0
If ip=0 ip=Len(param$)+1
M\st[c]=Mid$(param$,i,ip-i)
i=ip
c=c+1
Next
c=c-1
M\LastE=c
End Function

;========
A.TMassiv=New TMassiv
Split(Input(),A,":;-")


For i=1 To A\lastE
Print A\st[i]
Next
WaitKey()
End
[/blitz]
Function Split(param$,M.TMassiv,Dev$)
param$ -входная (обрабатываемая строка
M.TMassiv - элемент типа TMassiv
Dev$ - строка разделителей
TMassiv
st$[max_size%] - массив подстрок размера max_size%
LastE% - кол-во заполненных элементов

impersonalis 23.05.2006 14:27

примерно так. можно оптимизировать - дерзайте =)


Часовой пояс GMT +4, время: 04:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot