Avatar billede svjensen Nybegynder
06. maj 2003 - 14:42 Der er 4 kommentarer og
2 løsninger

Find '-' og ' ' i navn.

På baggrund af en databasekolonne med navne, skal jeg have lavet disse til initialer. Der er følgende krav:

Hans Henrik => H.H.
Hans-Henrik => H-H.
Hans-Henrik Erik => H-H.E.

Mit script kan p.t. hakke det uden problemer, hvis jeg ved om der er mellemrum eller bindestreg. Men jeg har brug for et script, der fungerer, uanset om der er det ene eller det andet eller begge dele.
Avatar billede websmith Nybegynder
06. maj 2003 - 14:47 #1
Hvad med

if Instr(rs("kolonne")," ")>0 Or Instr(rs("kolonne"),"-")>0 then
call HakOpSomSædvalingt(rs("kolonne"))
end if
Avatar billede websmith Nybegynder
06. maj 2003 - 14:54 #2
Du kan fx lave din hakop funktion om til at loope igennem alle karakterer, og
for hver karakter checker den om det er et mellemrum eller punktum, og hvis den finder det ene eller andet, så tilføjer den karaktereren før, plus det påkrævede.

noget ala dette i pseudokode:
retur=""
navn="Hans-Henrik Erik"
for x=0 to len(navn)
  select case Mid(navn,x+1,1)
  case " "
    retur=retur & Mid(navn,x,1)& "."
    case "."
    retur=retur & Mid(navn,x,1)& "."

end select
next

Det kan endda være at koden fungerer direkte i asp uden omkodning, men det er ideen som tæller :)
Avatar billede websmith Nybegynder
06. maj 2003 - 14:56 #3
Den skulle selvfølgelig have været:

for x=0 to len(navn)
  select case Mid(navn,x+1,1)
  case " "
    retur=retur & Mid(navn,x,1)& "."
    case "-"
    retur=retur & Mid(navn,x,1)& "-"

end select
next
Avatar billede svjensen Nybegynder
06. maj 2003 - 15:06 #4
Jeg har lige arbejdet lidt med dit første svar, og er nået frem til følgende:

If rs1("navn_for") <> "" Then
  If Instr(rs1("navn_for"), " ") > 0 AND Instr(rs1("navn_for"), "-") = 0 Then
    arrayforstr = trim(rs1("navn_for"))
    arrayfor = Split(arrayforstr, " ")
    init_for = ""
    For i = LBound(arrayfor) To UBound(arrayfor)
        init_for = init_for & Left(arrayfor(i), 1) & "."
    Next
  ElseIf Instr(rs1("navn_for"), " ") = 0 AND Instr(rs1("navn_for"), "-") > 0 Then
    arrayforstr = trim(rs1("navn_for"))
    arrayfor = Split(arrayforstr, "-")
    init_for = ""
    For i = LBound(arrayfor) To UBound(arrayfor)
        init_for = init_for & Left(arrayfor(i), 1) & "-"
    Next
    init_for = Left(init_for, (len(init_for) - 1))
    init_for = init_for & "."               
  ElseIf Instr(rs1("navn_for"), " ") > 0 AND Instr(rs1("navn_for"), "-") > 0 Then

  Else
    arrayforstr = trim(rs1("navn_for"))
    arrayfor = Split(arrayforstr, " ")
    init_for = ""
    For i = LBound(arrayfor) To UBound(arrayfor)
        init_for = init_for & Left(arrayfor(i), 1) & "."
    Next
  End If
End If

Som du kan se mangler jeg koden til at tackle begge dele.

Jeg prøver lige dit senste svar af.
Avatar billede svjensen Nybegynder
06. maj 2003 - 15:13 #5
Dit seneste svar har den fordel, at det virker uanset hvad.
MEN! Det tager det sidste bogstav i hvert navn, og ikke det første som det skal.
Avatar billede svjensen Nybegynder
07. maj 2003 - 08:38 #6
Jeg har fundet en løsning vha.:

If rs1("navn_for") <> "" Then
    navn_for = rs1("navn_for")
    init_for = Left(navn_for, 1)
    for x= 0 To len(navn_for)
        select case Mid(navn_for, x+1, 1)
        case " "
            init_for = init_for & "."
            If x < len(navn_for) Then
                init_for = init_for & Mid(navn_for, x+2, 1)
            End If
        case "-"
            init_for = init_for & "-"
            If x < len(navn_for) Then
                init_for = init_for & Mid(navn_for, x+2, 1)
            End If
        End select
    next
    init_for = init_for & "."
End If

Du får lidt for inspirationen.

Søren
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester