'---Script created on 09-10-2023 07:45:50 by Gary Robinson
Uses "console"
'testing oop to create a function module with between and replace functions
Type BetweenReplace
Private
mainStr as string
public
Function _Create(mainString as string) As Long
'---------------------------------------------------
me.mainStr=mainString
End Function
function printMainstr() as string
print me.mainStr + $crlf
end function
function toVariable() as string
function =me.mainStr
end function
function NewMainString(newMain as string)
me.mainStr = newMain
end function
function ReplaceAll(findstr AS STRING,replaceStr AS STRING) as string
'thinbasic replace function
me.mainStr = replace$(me.mainstr,findStr,replaceStr)
end function
FUNCTION replaceOne(findstr AS STRING,replaceStr AS STRING) AS STRING
'front match
DIM front AS STRING,back AS STRING
DIM frntPos AS LONG,bckPos AS LONG
IF INSTR(me.mainStr,findStr) THEN
frntPos=INSTR(me.mainStr,findstr)
bckPos=frntPos+LEN(findstr)
me.mainStr=MID$(me.mainStr,1,frntpos-1)+replaceStr+MID$(me.mainStr,bckPos)
ELSE
FUNCTION=me.mainStr
END IF
END FUNCTION
FUNCTION BetweenStr( delimiter as string, delimiter2 as string) as string 'find the text between two markers... this is a very useful function!
dim sText as string,posFirst as long,posSecond as long
posFirst = instr(me.mainStr,delimiter)-1
posFirst = posFirst + len(delimiter)+1
posSecond = instr(me.mainStr,delimiter2)
function=mid$(me.mainStr,posFirst,posSecond-posFirst)
END FUNCTION
Function ParseBetween(delimiter as string,delimiter2 as string,index as long) as string
dim first as string
dim p as long,q as long
p=instr(1,me.mainStr,delimiter,index)
q=instr(1,me.mainStr,delimiter2,index)
if (p=0 or q=0) Then
function = sMainString
else
first=parse$(me.mainStr,delimiter,index+1)
function=parse$(first,delimiter2,1)
end if
End Function
Function ParseBetweenReplace(delimiter as string,delimiter2 as string,indx as long,replaceStr as string) as string
dim sss as string,i as long,p as long,ddd as string,q as long
p=instr(1,me.mainStr,delimiter,indx)
q=instr(1,me.mainStr,delimiter2,indx)
if (p=0 or q=0) Then
function = me.mainStr
else
sss=mid$(me.mainStr,1,p+len(delimiter)-1)
ddd=mid$(me.mainStr,q)
me.mainStr=sss+replaceStr+ddd
end if
End Function
end type
dim main as string
dim tmp as string
main = "<TR><TD> John Doe </TD><TD> 123-45-6789 </TD></TR>" + $crlf
Dim br As BetweenReplace( main )
print "========================================================"+$crlf
print "===ParseBetweenReplace=================================="+$crlf
print br.ParseBetweenReplace("<TD>","</TD>",1," John Smith ") + $crlf
Print br.ParseBetweenReplace("<TD>","</TD>",2," 999-99-9999 ") + $crlf
print br.PrintMainStr
print $crlf
print "========================================================"+$crlf
print "===ParseBetween========================================="+$crlf
br.NewMainString(main)
Print br.ParseBetween("<TD>","</TD>",1) + $crlf
Print br.ParseBetween("<TD>","</TD>",2) + $crlf
print $crlf
print "========================================================"+$crlf
print "===BetweenStr========================================="+$crlf
Print br.BetweenStr("<TD>","</TD>") + $crlf
print $crlf
print "========================================================"+$crlf
print "===ReplaceAll==========================================="+$crlf
print br.ReplaceAll("<TD>","<>")
Print br.ReplaceAll("</TD>","</>")
print br.PrintMainStr
print $crlf
br.NewMainString(main)
print "========================================================"+$crlf
print "===ReplaceOne==========================================="+$crlf
print br.ReplaceOne("<TD>","<>") + $crlf
Print br.ReplaceOne("</TD>","</>")
print br.PrintMainStr
print "========================================================"+$crlf
print "===toVariable==========================================="+$crlf
tmp = br.toVariable()
print tmp +$crlf
Console_WaitKey
Bookmarks