AppleScript: Text suchen/ersetzen advanced

-- find : Text (or list of text) to be found
-- replace : Text (or list of text) to replace with
-- subject : Text (or list of text) to be searched
on str_replace(find, replace, subject)
  set prevTIDs to text item delimiters of AppleScript
  set returnList to true

  -- This wouldn't make sense (you could have it raise an error instead)
  if class of find is not list and class of replace is list then return subject

  if class of find is not list then set find to {find}
  if class of subject is not list then ¬
    set {subject, returnList} to {{subject}, false}

  set findCount to count find
  set usingReplaceList to class of replace is list

  try
    repeat with i from 1 to (count subject)
      set thisSubject to item i of subject
      repeat with n from 1 to findCount
        set text item delimiters of AppleScript to item n of find
        set thisSubject to text items of thisSubject
        if usingReplaceList then
          try
            item n of replace
          on error
            "" -- `replace` ran out of items
          end try
        else
          replace
        end if

        set text item delimiters of AppleScript to result
        set thisSubject to "" & thisSubject
      end repeat

      set item i of subject to thisSubject
    end repeat
  end try

  set text item delimiters of AppleScript to prevTIDs
  if not returnList then return beginning of subject
  return subject
end str_replace