Search and Replace

Ken Ray kray at sonsothunder.com
Sat Oct 18 00:34:15 EDT 2003


> he him himself his he's boy guy He Him Himself His He's Boy Guy
> 
> I get:
> 
> he her herself her she's girl gal He Him Himself His He's Boy Guy
> 
> There seems to be a problem if a replaceable word is the 
> first word of a sentence, and obviously, capitalization seems 
> to be an issue.
> 
> Below is the searchAndReplaceMaleToFemale() function.  Any ideas?

Dan,

Here's a replacement function - it's a little "messy" (because I have to
wrap 'whatText' in spaces at the beginning and strip them at the end),
but it works:

function searchAndReplaceMaleToFemale whatText
  local tStart,tEnd
  
  put "he,him,himself,his,he's,boy,guy" into SearchWordsMale
  put "she,her,herself,her,she's,girl,gal" into SearchWordsFemale
  set the wholeMatches to true
  set the caseSensitive to false
  put " " & whatText & " " into whatText
  repeat forever
    get
matchChunk(whatText,"\W+((B|b)oy|(h|H)(e|im|is|imself|e's)|(g|G)uy)\W+",
tStart,tEnd)
    if it is true then
      put char tStart to tEnd of whatText into tFoundChunk
      put (charToNum(toUpper(char 1 of tFoundChunk)) = charToNum(char 1
of tFoundChunk)) into isUpper
      put itemOffset(tFoundChunk,SearchWordsMale) into tItem
      if tItem <> 0 then
        put item tItem of SearchWordsFemale into temp
        if isUpper then put toUpper(char 1 of temp) into char 1 of temp
        put temp into char tStart to tEnd of whatText
      else
        -- you decide... bail? error out? ignore?
      end if
    else
      exit repeat
    end if
  end repeat
  delete char 1 of whatText
  delete char -1 of whatText
  return whatText
end searchAndReplaceMaleToFemale

If I find a more elegant solution, I'll let you know...

Ken Ray
Sons of Thunder Software
Email: kray at sonsothunder.com
Web Site: http://www.sonsothunder.com/ 




More information about the Use-livecode mailing list