ID Artikel: 168799 - Kajian Terakhir: 15 September 2011 - Revisi: 2.0

Bagaimana untuk memilah nama seseorang ke beberapa variabel

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menyediakan prosedur untuk parsing mengandung variabel tunggal nama seseorang menjadi hingga 6 bagian:
   Title                (Mr., Ms., etc.)
   First Name
   Middle Initial(s)
   Last Name
   Pedigree             (Jr., Sr., III, etc.)
   Degree(s)            (B.S., PhD, etc.)
				

INFORMASI LEBIH LANJUT

PERINGATAN: PENGGUNAAN OLEH ANDA DARI KODE/MAKRO YANG TERSEDIA DI DALAM ARTIKEL INI ADALAH PADA RISIKO ANDA SENDIRI. Microsoft menyediakan ini kode/makro "sebagaimana adanya" tanpa garansi apapun, baik tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan tersirat mengenai keadaan yang dapat diperjualbelikan dan/atau kesesuaian untuk tertentu tujuan.

Catatan: dalam kode contoh berikut, garis bawah (_) pada akhir baris digunakan sebagai karakter baris-kelanjutan. Untuk versi BASIC yang tidak mendukung karakter baris-kelanjutan, menghapus garis bawah dari akhir baris dan bergabung dengan baris berikut ketika menciptakan kembali ini kode.

Bidang yang diuraikan dan dihapus dari nama dalam urutan berikut:
Judul-(jika kata pertama pertandingan daftar judul standar)
Derajat-(apa-apa setelah koma pertama)
Silsilah-(jika kata terakhir pertandingan daftar standar silsilah)
Terakhir nama-(tidak boleh berisi spasi, tetapi dapat hyphenated)
Nama pertama-(tidak boleh berisi spasi)
Initial(s) tengah-(sisa)

Contoh langkah demi langkah

  1. Masukkan kode berikut:
          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
    
          Function CutWord (ByVal S As String, Remainder As String) As String
          '
          ' CutWord: returns the first word in S.
          ' Remainder: returns the rest.
          '
          Dim P As Integer
            S = Trim$(S)
            P = InStr(S, " ")
            If P = 0 Then P = Len(S) + 1
            CutWord = Left$(S, P - 1)
            Remainder = Trim$(Mid$(S, P + 1))
          End Function
    
          Sub ParseName (ByVal S As String, Title As String, FName As String, _
                         MName As String, LName As String, _
                         Pedigree As String, Degree As String)
          Dim Word As String, P As Integer, Found As Integer
          Const Titles = "Mr.Mrs.Ms.Dr.Miss,Sir,Madam,Mayor,President"
          Const Pedigrees = "Jr.Sr.III,IV,VIII,IX,XIII"
            Title = ""
            FName = ""
            MName = ""
            LName = ""
            Pedigree = ""
            Degree = ""
          '
          ' Get Title
          '
            Word = CutWord(S, S)
            If InStr(Titles, Word) Then
              Title = Word
            Else
              S = Word & " " & S
            End If
          '
          ' Get Degree
          '
            P = InStr(S, ",")
            If P > 0 Then
              Degree = Trim$(Mid$(S, P + 1))
              S = Trim$(Left$(S, P - 1))
            End If
          '
          ' Get Pedigree
          '
            Word = CutLastWord(S, S)
            If InStr(Pedigrees, Word) Then
              Pedigree = Word
            Else
              S = S & " " & Word
            End If
          '
          ' Get the rest
          '
            LName = CutLastWord(S, S)   ' Last Name
            FName = CutWord(S, S)       ' First Name
            MName = Trim(S)             ' Initials/Middle Name(s)
          End Sub
    						
  2. Untuk menguji, membuat formulir dengan tujuh kotak teks (txtName, txtTitle, txtFirstName, txtMI, txtLastName, txtPedigree, txtDegree), dan perintah tombol. Tambahkan kode berikut:
          Sub Command1_Click()
          Dim Title As String, FName As String, MI As String
          Dim LName As String, Pedigree As String, Degree As String
            ParseName txtName, Title, FName, MI, LName, Pedigree, Degree
            txtTitle = Title
            txtFirstName = FName
            txtMI = MI
            txtLastName = LName
            txtPedigree = Pedigree
            txtDegree = Degree
          End Sub
    						
  3. Menampilkan bentuk, ketik nama ke txtName dan klik perintah tombol. Enam bidang lain harus berisi nilai-nilai parsing.

Informasi tambahan

Catatan lain, keterbatasan, dan saran untuk perbaikan (ke kiri perangkat pembaca):

  1. Rutin parsing mengasumsikan koma sebelum tingkat tapi tidak sebelum Silsilah. Jika tanda koma sebelum silsilah, akan disertakan sebagai bagian dari Degree (s). Jika Anda ingin mengijinkan silsilah menjadi didahului oleh koma, Anda dapat menambahkan tambahan Periksa untuk melihat apakah yang pertama kata (dipisahkan koma) derajat adalah dalam daftar standar Silsilah.
  2. Nama pertama dan terakhir diasumsikan berisi spasi tidak. Jika mereka melakukan (misalnya Mary Beth Saint John), bagian dari nama (misalnya Beth Saint) akan berakhir sampai di tengah nama awal/tengah mengembalikan nilai. Sayangnya, karena untuk variabilitas tinggi kasus ini, ada tidak ada solusi yang baik lain dari intervensi manual.
  3. Rutin parsing dirancang untuk nama bahasa Inggris/Amerika. Lainnya bahasa memiliki konvensi yang berbeda yang mungkin memerlukan penyesuaian kode parsing.
  4. Daftar standar judul dan silsilah dengan mudah dapat diperpanjang oleh menambahkan entri ke dua Deklarasi Const di ParseName.
  5. Cek untuk judul dapat dibuat lebih generik oleh mencari periode di akhir kata pertama jika tidak sudah di daftar standar Judul.

Berlaku bagi:
  • Microsoft Visual Basic 5.0 Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
Kata kunci: 
kbhowto kbprogramming kbmt KB168799 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:168799  (http://support.microsoft.com/kb/168799/en-us/ )