How To Parse City, State, and Zip Code into Separate Values
- Either 5- or 9-digit zip code.
- Multi-word state names (if preceded by a comma).
- Any number of intermediate spaces.
New York, NY, 99999-9999
New York, NY 99999-9999
New York NY 99999
NOTE: In the following sample code, an underscore (_) at the end of a lineis used as a line-continuation character. For versions of BASIC that don'tsupport line-continuation characters, remove the underscore from theend of the line and merge with the following line when re-creating thiscode.
Fields are parsed in the following order if no commas are found in theaddress:
- Enter the following code:
Function CutLastWord (ByVal S As String, Remainder As String) _ As String ' CutLastWord: returns the last word in S. ' Remainder: returns the rest. ' ' Words are separated by spaces ' Dim I As Integer, P As Integer S = Trim$(S) P = 1 For I = Len(S) To 1 Step -1 If Mid$(S, I, 1) = " " Then P = I + 1 Exit For End If Next I If P = 1 Then CutLastWord = S Remainder = "" Else CutLastWord = Mid$(S, P) Remainder = Trim$(Left$(S, P - 1)) End If End Function Sub ParseCSZ (ByVal S As String, City As String, State As String, _ Zip As String) Dim P As Integer ' ' Check for comma after city name ' P = InStr(S, ",") If P > 0 Then City = Trim$(Left$(S, P - 1)) S = Trim$(Mid$(S, P + 1)) ' ' Check for comma after state ' P = InStr(S, ",") If P > 0 Then State = Trim$(Left$(S, P - 1)) Zip = Trim$(Mid$(S, P + 1)) Else ' No comma between state and zip Zip = CutLastWord(S, S) State = S End If Else ' No commas between city, state, or zip Zip = CutLastWord(S, S) State = CutLastWord(S, S) City = S End If ' ' Clean up any dangling commas ' If Right$(State, 1) = "," Then State = RTrim$(Left$(State, Len(State) - 1)) End If If Right$(City, 1) = "," Then City = RTrim$(Left$(City, Len(City) - 1)) End If End Sub
- To test, create a form with four text boxes (txtAddress, txtCity, txtState, txtZip), and a command button. Add the following code:
Sub Command1_Click() Dim City As String, State As String, Zip As String ParseCSZ txtAddress, City, State, Zip txtCity = City txtState = State txtZip = Zip End Sub
- Display the form, type an address into txtAddress, and click the command button. The other three fields should contain the parsed values.
Αναγνωριστικό άρθρου: 168798 - Τελευταία αναθεώρηση: 01/19/2007 23:13:43 - Αναθεώρηση: 3.6
- kbhowto kbprogramming KB168798