Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Odd string replacement: STRTRAN but with embedded spaces
Message
From
14/11/2006 12:02:23
 
 
To
14/11/2006 01:50:13
John Ryan
Captain-Cooker Appreciation Society
Taumata Whakatangi ..., New Zealand
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01169359
Message ID:
01169539
Views:
8
John --

Your proposed solution works just fine. I shortened it a little bit:
lparam lcOrgDescr, lcUPCCode

	* removes matches to UPC Code regardless of extra spaces in description
	Local lnCounter, lcUPC, lcInit, lcPart, lnAt, lcPart1, lcPart2, lnChar, lcResult

	lnCounter	= 1
	lcUPC 		= DAB(lcUPCCode)
	lcInit 		= Left(m.lcUPC,1)
	lcResult 		= lcOrgDescr

	lnAt=At(m.lcInit,m.lcResult,m.lnCounter)

	Do While m.lnAt>0
		If Chrtran(Substr(m.lcResult,m.lnAt),[ ],[])=m.lcUPC
			lcResult1=Rtrim(Left(m.lcResult,m.lnAt-1))
			lcResult2=Ltrim(Substr(m.lcResult,m.lnAt))

			For lnChar=1 To Len(m.lcUPC)
				lcResult2=Ltrim(Substr(m.lcResult2,2))
			Endfor

			lcResult=Strtran(Rtrim(m.lcResult1+[ ]+m.lcResult2),[( )],[])
		Endif

		lnCounter=m.lnCounter+1
		lnAt=At(m.lcInit,m.lcResult,m.lnCounter)

	Enddo
Thanks so much,

Jim

>James,
>
>OK. I suppose you want the brackets removed as well if they exist around the UPC. ;-) Plus the UPC removed with white space wherever it occurs?
>
>OK.
>
>
>lnCounter=1
>lcUPC=alltrim(cUPC)
>lcInit=left(m.lcUPC,1)
>lcPart=cPart
>
>lnAt=at(m.lcInit,m.lcPart,m.lnCounter)
>
>do while m.lnAt>0
>  if chrtran(substr(m.lcPart,m.lnAt),[ ],[])=m.lcUPC
>    lcPart1=rtrim(left(m.lcPart,m.lnAt-1))
>    lcPart2=ltrim(substr(m.lcPart,m.lnAt))
>
>    for lnChar=1 to len(m.lcUPC)
>      if m.lcPart2=substr(m.lcUPC,m.lnChar,1)
>        lcPart2=ltrim(substr(m.lcPart2,2))
>        *---done this way to eliminate spaces...
>      else
>        lnChar=1000000
>      endif
>    endfor
>
>    if m.lnChar<=1000000
>      lcPart=strtran(rtrim(m.lcPart1+[ ]+m.lcPart2),[( )],[])
>      exit
>    endif
>  endif
>
>  lnCounter=m.lnCounter+1
>  lnAt=at(m.lcInit,m.lcPart,m.lnCounter)
>
>enddo
Jim Nelson
Newbury Park, CA
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform