>I have a situation where I am using STRTRAN to replace some text in a
>memo
>field. It goes like this:
>
>REPLACE mymemo WITH STRTRAN(mymemo,'my text','new text')
>
>But, sometimes, in the memo field, the text that need to replaced is
>either
>lower case, upper case or a mix of both.
>
>If I use something like this:
>
>REPLACE mymemo WITH STRTRAN(UPPER(mymemo),'MY TEXT','new text')
>
>it will replace all the variations of my text but will also replace
>the
>memo field in uppercase. How, can I get all the variations by keeping
>the
>memo field as is?
Disclaimer: This is untested, and there is no error checking.
procedure CaseInsensitiveStrTran
parameter tcCompleteString, tcStringToReplace, tcNewString
private lnLocation, lcReturnString
* Ensure that the original value isn't changed, even if passing by
reference
m.lcReturnString = m.tcCompleteString
* Find the first location of the string
m.lnLocation = at(upper(m.tcStringToReplace),upper(m.tcCompleteString))
* Since at least one location of the string was found, replace them all
do while m.lnLocation # 0
* Remove the old text, insert the new
m.lcReturnString = ;
stuff(m.lcReturnString,m.lnLocation,len(m.tcStringToReplace),m.tcNewString)
* Find the next occurence of the string
m.lnLocation =
at(upper(m.tcStringToReplace),upper(m.tcCompleteString))
enddo
* Return the adjusted string
return m.lcReturnString