Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
20.5. Как можно удалить часть текста из описания?
В: Как можно удалить часть текста из описания?
О:
Если вы точно знаете, какую часть описания вам нужно удалить, и она не повторяется несколько раз, можно использовать простой алгоритм:
! запоминаем описание
local $description=$maintxt
! С помощью функции $replace заменяем полученное значение на значение с удалённой строкой
$description=$replace($description,"строка, которую хотим удалить")
! стираем основное описание
*clr
! выводим новое
*p $description
local $description=$maintxt
! С помощью функции $replace заменяем полученное значение на значение с удалённой строкой
$description=$replace($description,"строка, которую хотим удалить")
! стираем основное описание
*clr
! выводим новое
*p $description
Возможно вам понадобится удалить часть описания, которая несколько раз повторяется в тексте. Тогда придётся воспользоваться более сложным алгоритмом:
! строка,которую хотим удалить
$killstr="#F92672"
! запоминаем описание
$description=$maintxt
! с помощью цикла и функции instr, определяем, с какого символа начинается вхождение
local iNum=3 & ! номер вхождения, которое хотим удалить
local i=0 & ! счётчик
local fromPos=0 & ! с какого символа начинать поиск вхождения
local in_str=0 & ! с какого символа начинается вхождение
loop while 1 step i+=1:
in_str=instr($description,$killstr,fromPos+1)
if i<iNum and in_str<>fromPos:
fromPos=in_str
else
! вырезаем первую часть до вхождения
$part_1=$mid($description,1,fromPos-1)
! вырезаем часть после вхождения
$part_2=$mid($description,fromPos+len($killstr))
! собираем новое описание
$description=$part_1+$part_2
jump 'end_cycle' & ! прерываем цикл
end
end
:end_cycle
! стираем основное описание
*clr
! выводим новое
*p $description
$killstr="#F92672"
! запоминаем описание
$description=$maintxt
! с помощью цикла и функции instr, определяем, с какого символа начинается вхождение
local iNum=3 & ! номер вхождения, которое хотим удалить
local i=0 & ! счётчик
local fromPos=0 & ! с какого символа начинать поиск вхождения
local in_str=0 & ! с какого символа начинается вхождение
loop while 1 step i+=1:
in_str=instr($description,$killstr,fromPos+1)
if i<iNum and in_str<>fromPos:
fromPos=in_str
else
! вырезаем первую часть до вхождения
$part_1=$mid($description,1,fromPos-1)
! вырезаем часть после вхождения
$part_2=$mid($description,fromPos+len($killstr))
! собираем новое описание
$description=$part_1+$part_2
jump 'end_cycle' & ! прерываем цикл
end
end
:end_cycle
! стираем основное описание
*clr
! выводим новое
*p $description