Search and Replace

Dan Friedman dan at clearvisiontech.com
Fri Oct 17 14:49:43 EDT 2003


Hello all!

I'm having a problem with a function that Ken Ray helped me with.  I tried
to fix it myself, but I don't really understand the matchChunk function.

The goal is to pass searchAndReplaceMaleToFemale() whatText and return a
female version of whatText.  But it's not quite working correctly.  When I
pass:

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?


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
  repeat forever
    get 
matchChunk(whatText,"[^A-Za-z0-9](boy|h(e|im|is|imself|e's)|guy)[^A-Za-z0-9]
",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
  return whatText
end searchAndReplaceMaleToFemale



More information about the Use-livecode mailing list