วิธีการแยกวิเคราะห์ชื่อของบุคคลที่เป็นตัวแปรหลาย

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 168799 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้แสดงขั้นตอนสำหรับการแยกวิเคราะห์ตัวแปรเดียวที่ประกอบด้วยชื่อของบุคคลที่เป็นส่วนที่ 6 ถึง:
   Title                (Mr., Ms., etc.)
   First Name
   Middle Initial(s)
   Last Name
   Pedigree             (Jr., Sr., III, etc.)
   Degree(s)            (B.S., PhD, etc.)
				

ข้อมูลเพิ่มเติม

คำเตือน: ใช้ ด้วยตัวคุณของรหัส/แมโคที่มีบทความนี้มีที่อยู่ของคุณต้องยอมรับความเสี่ยง Microsoft ให้แมโคนี้รหัส/ร "ตามที่เป็นอยู่" โดยไม่มีการรับประกันใด ๆ อย่างใดอย่างหนึ่ง หรือโดยนัย รวมถึงแต่ไม่จำกัดเพียงการรับประกันโดยนัยของสามารถเชิงพาณิชย์และ/หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ

หมายเหตุ: ในโค้ดตัวอย่างต่อไปนี้ ขีดข้อล่าง (_) เมื่อสิ้นสุดของบรรทัดมีใช้เป็นอักขระที่มีต่อของบรรทัด สำหรับเวอร์ชันของ BASIC ที่ไม่สนับสนุนการมีต่อของบรรทัดอักขระ เอาการขีดล่างจากจุดสิ้นสุดของบรรทัดและผสานกับบรรทัดต่อไปนี้เมื่อ re-creating รหัสนี้

ฟิลด์จะแยกวิเคราะห์ และการเอาออกจากชื่อตามลำดับต่อไปนี้:
ชื่อเรื่อง- (ถ้าคำแรกตรงกับรายการของชื่อเรื่องที่มาตรฐาน)
ระดับ- (anything หลังเครื่องหมายจุลภาคแรก)
pedigree- (ถ้าคำสุดท้ายตรงกับรายการ pedigrees มาตรฐาน)
ชื่อที่เคย- (ต้องไม่ประกอบด้วยการเว้นวรรค แต่สามารถ hyphenated)
ชื่อแรก- (ต้องไม่ประกอบด้วยช่องว่าง)
Initial(s) กลาง- (เหลือ)

ตัวอย่าง step-by-Step

  1. ป้อนรหัสต่อไปนี้:
          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. เมื่อต้องการทดสอบ สร้างฟอร์ม ด้วยกล่องข้อความที่เจ็ด (txtName, txtTitle, txtFirstName, txtMI, txtLastName, txtPedigree, txtDegree), และปุ่มคำสั่ง เพิ่มรหัสต่อไปนี้:
          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. แสดงแบบฟอร์ม พิมพ์ชื่อลงใน txtName และคลิกที่ปุ่มคำสั่ง หกฟิลด์อื่น ๆ ควรประกอบด้วยค่า parsed

Additional information:

หมายเหตุ ข้อจำกัด และอื่น ๆ คำแนะนำสำหรับการปรับปรุง (ซ้ายไปยังอุปกรณ์ของตัวอ่าน):

  1. ขั้นตอนการแยกวิเคราะห์สันนิษฐานจุลภาค ก่อนระดับ แต่ไม่มีอยู่ ก่อน Pedigree ถ้ามีเครื่องหมายจุลภาคก่อน Pedigree จะถูกรวมเป็นส่วนหนึ่งของการ Degree(s) ถ้าคุณต้องการอนุญาต Pedigree ไปเป็นก่อนหน้า ด้วยเครื่องหมายจุลภาค คุณสามารถเพิ่มการตรวจสอบเพิ่มเติมเพื่อดูว่าหนึ่งคำ (คั่นด้วยจุลภาค) ของ ระดับอยู่ในรายการของ Pedigrees มาตรฐาน
  2. ชื่อแรก และสุดท้ายจะสันนิษฐานเพื่อให้ประกอบด้วยช่องว่างที่ไม่มี ถ้าทำ (ตัวอย่างเช่น Mary Beth เซนต์สมชาย), ส่วนของชื่อ (ตัวอย่างเช่นเซนต์ Beth) จะจบอัพในชื่อเริ่มต้น/กลางกลางคืนค่า แต่ เนื่องจากการ variability สูงของกรณีนี้ ไม่มีวิธีแก้ปัญหาที่ดีที่เหนือการขัดจังหวะโดยด้วยตนเอง
  3. ขั้นตอนการแยกวิเคราะห์ไม่ได้รับการออกแบบสำหรับชื่อของภาษาอังกฤษ/นอเมริกา ภาษาอื่น ๆ อาจมีแบบแผนการคิดต่าง ๆ ที่อาจต้องการปรับปรุงรหัสการแยกวิเคราะห์
  4. รายการของชื่อเรื่องและ Pedigrees มาตรฐานอาจจะได้อย่างง่ายดายขยาย โดยการเพิ่มรายการ declarations Const สองใน ParseName
  5. ตรวจสอบชื่อสามารถทำแบบทั่วไปมากขึ้น โดยการค้นหาระยะเวลาที่สิ้นสุดของคำแรกหากไม่อยู่ในรายการของชื่อเรื่องมาตรฐาน

คุณสมบัติ

หมายเลขบทความ (Article ID): 168799 - รีวิวครั้งสุดท้าย: 12 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft Visual Basic 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
Keywords: 
kbhowto kbprogramming kbmt KB168799 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:168799

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com