Hi Richard, I think we determined there was a problem with trailing spaces being ignored a couple of years ago on this thread:
and specifically I gave some code to work around this on this post:
By the sound of this latest post above, that earlier effort must not have solved your problem?? If that’s the case then I am happy to have another look if you can please clearly state the problem and why that earlier StrPosLen function doesn’t solve it. Thanks.
cheers again
Geoff R
edit1: for clarity, this is the function I was referring to:
prototype :
StrPosLen Procedure(string pText, string pRegex, bool pExcludeTrailingSpaces=true),LONG !return the maximum matching string length
code:
StrPosLen PROCEDURE (string pText,string pRegex,bool pExcludeTrailingSpaces)
x long,auto
max long,auto
len long
stPos long
regex &string
CODE
!if ~address(pText) then return 0. ! uncomment this line if you decide to pass pText by reference instead of value
if size(ptext) = 0 or size(pRegex) = 0 then return 0.
stPos = strPos(pText, pRegex) ! get start position
if ~stPos then return 0. ! no match
if stPos = size(pText) then return 1. ! match on last char
if pRegex[size(pRegex)] = '$'
regex &= pRegex ! point at passed regex
else
regex &= new String(size(pRegex)+1)
regex = pRegex & '$'
end
max = size(pText) - stPos ! max increment size
loop x = 0 to max
if strPos(pText[stPos : stPos+x],regex)
len = x + 1
elsif len
break
end
end
if address(regex) <> address(pRegex) then dispose(regex).
if len and pExcludeTrailingSpaces
len = len(clip(pText[stPos : stPos+len-1]))
end
return len