Чтобы нарезать строку типа "12_345_67" или "яблоко|персик|апельсин" на составляющие ("12", "345", "67" или "яблоко", "персик", "апельсин") можно воспользоваться следующим методом:
1. Создаём локацию с именем, например, "НарезатьСтроку" и помещаем в неё следующий код:
!Параметры
! 1. 0 - Строка с данными (тип: строка)
! 2. 1 - Имя массива, в элементы которого будут помещены данные (тип: строка)
! 3. 2 - Разделитель элементов в строке (тип: строка)
ARGS[3]=0
!----------
Result=0
!----------
if $ARGS[0]='': EXIT
!----------
$ARGS['Строка']=$ARGS[0]
$ARGS['Массив']=IIF($ARGS[1]='','otg_НарезкаСтроки',$ARGS[1])
$ARGS['Разделитель']=IIF($ARGS[2]='','|',$ARGS[2])
!----------
killvar $ARGS['Массив']
!----------
$ARGS['Строка']+=$ARGS['Разделитель']
:метка_перебор
ARGS['Поз']=instr(1,$ARGS['Строка'],$ARGS['Разделитель'])
if ARGS['Поз']>0:
$ARGS['Элемент']=mid($ARGS['Строка'],1,ARGS['Поз']-1)
if isnum($ARGS['Элемент']):
dynamic "<<$ARGS['Массив']>>[]=<<val($ARGS['Элемент'])>>"
else
dynamic "$<<$ARGS['Массив']>>[]='<<replace($ARGS['Элемент'],'''','''''')>>'"
end
Result=-1
!----------
$ARGS['Строка']=mid($ARGS['Строка'],ARGS['Поз']+1)
jump 'метка_перебор'
end2. Вызываем эту локацию со следующими параметрами:
GS 'НарезатьСтроку', '12_345_67', 'МойМассив', '_'
или
GS 'НарезатьСтроку', 'яблоко|персик|апельсин', 'МойМассив', '|'
3. В результате получаем заполненный значениями массив "МойМассив":
МойМассив[0]=12 МойМассив[1]=345 МойМассив[2]=67
или
$МойМассив[0]='яблоко' $МойМассив[1]='персик' $МойМассив[2]='апельсин'
Примечание — переменная-массив (в примере "МойМассив") автоматически очищается.
Неактивен