06. maj 2003 - 14:42Der 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.
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 :)
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.
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
Synes godt om
Ny brugerNybegynder
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.