Makale numarası: 168799 - Son Gözden Geçirme: 19 Ocak 2007 Cuma - Gözden geçirme: 4.5

Nasıl yapılır: Kişi'nin adı birden çok değişken çözümle

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir kişinin adı en çok 6 parçalara içeren tek bir değişken ayrıştırmak için bir yordam içermektedir:
   Title                (Mr., Ms., etc.)
   First Name
   Middle Initial(s)
   Last Name
   Pedigree             (Jr., Sr., III, etc.)
   Degree(s)            (B.S., PhD, etc.)
				

Daha fazla bilgi

UYARI: TÜM, BU MAKALEDE SAĞLANAN KODU/MAKRO TARAFINDAN KENDİ SORUMLULUà ° UNUZDADýR KULLANILIR. Microsoft, bu kod / "olduğu gibi" makro hiçbir garanti, ya da veya zımni, dahil ancak bunlarla sınırlı olmamak satılabilirlik ve/veya belirli bir amaca uygunluk zımni hiçbir garanti olmadan sağlar.

Not: Aşağıdaki örnek kodda, bir satır devam karakteri olarak bir satır sonunda alt çizgi (_) kullanılır. Satır devam karakterleri desteklemeyen sürümleri BASIC, alt çizgi sonuna satır ve aşağıdaki satırı birleştirmeye zaman, bu kodu yeniden kaldırın.

Alanları ayrıştırılır ve aşağıdaki sırada adından kaldırıldı:
Başlık-(ilk sözcük standart başlıkların listesi eşleşiyorsa)
Derece-(sonra değer ilk virgül)
Pedigree-(son sözcük listesi, standart pedigrees eşleşiyorsa)
Soyadı-(boşluk içermelidir, ancak hecelenmiş)
Ad-(boşluk içermemelidir)
Orta Initial(s)-(geri kalan)

Adım adım örnek

  1. Aşağıdaki kodu girin:
          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. Sınamak için <a0></a0>, metin kutuları yedi (txtName txtTitle, txtFirstName, txtMI, txtLastName, txtPedigree, txtDegree) form ve komut düğmesi oluşturun. Aşağıdaki kodu ekleyin:
          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. Formun görüntülemek, txtName bir ad yazın ve komut düğmesini tıklatın. Altı diğer alanları çözümlenmi? değerler içermelidir.

Ek bilgi

Diğer Notlar, sınırlamaları ve önerileri iyileştirme (okuyucunun aygıt için sol):

  1. Ayrıştırma yordamına derecesini önce ancak değil Pedigree önce virgül varsayar. Pedigree önce virgül ise Degree(s) bir parçası olarak dahil edilir. Pedigree, virgülle önlerine izin vermek istiyorsanız, ilk, (virgülle ayrılmış), word, derecesini standart Pedigrees listesinde görmek için ek bir denetim ekleyebilirsiniz.
  2. Ilk ve son adları, boşluk içeren varsayılır. (Örneğin Mary Ayşe Saint Gamze) oluşuyorsa, adı (örneğin, Ayşe Saint) bir parçası Orta başlangıç/Göbek Adı dönüş değerinde sona erdirir. Ne yazık ki, bu durumda yüksek çeşitliliği nedeniyle, el ile müdahale dışındaki hiçbir bir iyi geçici çözüm vardır.
  3. Ayrıştırma yordamına ingiliz/Amerikan adları için tasarlanmıştır. Diğer diller ayrıştırma kodunun ayarlamalar gerektiren farklı kurallarına sahip olabilir.
  4. Standart başlıklar ve Pedigrees listesini kolayca ParseName iki eşitlenir bildirimlerinde girdileri ekleyerek uzatılabilir.
  5. Başlık denetle bir dönemin ilk sözcüğün sonunda, standart başlık listesinde yoksa bakarak daha genel kullanıma açılabilir.

Bu makaledeki bilginin uygulandığı durum:
  • 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 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbprogramming KB168799 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:168799  (http://support.microsoft.com/kb/168799/en-us/ )