× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Ahhh, it looks like you need more than just getting rid of spaces.

Here's some pseudo code for you.

StateEngine = 1
Namestring = Trim(Name)
Title = "", FirstName = "", MiddleName = "", LastName = "", Suffix = "", Extra 
= ""
While Length(Namestring <> 0)
   Pos = Locate(" ", Namestring)
   ThisPart = Left(Namestring, Pos - 1)
   ThisPartLength = Length(ThisPart)
   If Right(ThisPart, 1) = "."
      ThisPart = Left(ThisPart, Length(ThisPart) - 1)
   EndIf
   If StateEngine = 1
     If Upper(ThisPart) = "DR" Or Upper(ThisPart) = "MR" or Upper(ThisPart) = 
"MRS" or
            Upper(ThisPart) = "MS" or Upper(ThisPart) = "MISS".....
        Title = ThisPart
        ThisPart = ""
        StateEngine = 4  ' First Name should be next, we are in Last, first 
format
     EndIf
     If ThisPart <> ""  And Right(ThisPart, 1) = ","
       LastName = ThisPart
       ThisPart = ""
       StateEngine = 2  ' First Name should be next
   EndIf
   If ThisPart <> "" And StateEngine = 1 Or StateEngine = 2 Or StateEngine = 4
       FirstName = ThisPart
         ThisPart = ""
       if StateEngine = 4
          StateEngine = 5  ' Middle name/initial should be next, in Last, First 
format
       Else
          StateEngine = 3  ' Middle name/initial or lastname should be next
       EndIf
   EndIf
   If ThisPart <> "" And StateEngine = 3 or StateEngine = 5
      If LastName = ""
          LastName = ThisPart
      Else
          If StateEngine = 5
             If Upper(ThisPart) = "JR" Or Upper(ThisPart) = "SR" or 
Upper(ThisPart) = "DDS" or
                  Upper(ThisPart) = "MD" or Upper(ThisPart) = "ESQ".....
               Suffix = ThisPart
               ThisPart = ""
               StateEngine = 7  ' We should be done, don't know what to do with 
next stuff
             Else
               If MiddleName = ""
                  MiddleName = ThisPart
                  StateEngine = 6  ' We could have a suffix next
Etc.. etc.. etc...

  NameString = Trim(Right(NameString, Length(NameString) - 
Length(ThisPartLength)
End While

Basically, what you wind up then is fields FirstName, Middle Name, Last Name, 
Title, Suffix and Extra that can either have data or be blank, and are usually 
80% right.  You then print them out, or display on screen, next to the original 
text and browse through them looking for the exceptions.

I had to do something like this once.  Parsing free form text is not always 
easy.  Using the State Engine makes it simpler.

Good Luck.

Regards,

Jim Langston

-----Original Message-----
From: Joel Fritz [mailto:JFritz@sharperimage.com]

One way first and last names get concatenated is mailing lists.  Often the
record is more useful with one name field that contains the name in the form
that it should appear on the mailing label.  Parsing whole name fields into
their components is not a simple task.  Consider "Dr Elvis A. de Presley
Jr".


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.