webForumDet fria alternativet

Randomera namn..

10 svar · 446 visningar · startad av [AMD]Zmaster

[AMD]ZmasterMedlem sedan mars 20021 716 inlägg
#1

Tjena, behöver lite hjälp.
Jag har 2 olika .txt filer.
En som heter namn.txt, där det står olika förnamn, ett för varje rad.
En annan som heter efternamn.txt där det står olika efternamn, ett för varje rad.
Nu vill jag via en aspsida hämta värdena, dvs namnen och para ihop dem på alla sätt, utan att samma helnamn komer igen, dvs att det typ kan se ut så här:

namn.txt:

Stellan
Steven
Sixten

efternamn.txt:

Lindqvist
Broberg
Karlsson
Moberg

Då listar aspsidan följande namn:

Stellan Lindqvist
Stellan Broberg
Stellan Karlsson
Stellan Moberg
Steven Lindqvist
Steven Broberg
Steven Karlsson
Steven Moberg
Sixten Lindqvist
Sixten Broberg
Sixten Karlsson
Sixten Moberg

Det handlar om rätt många namn totalt om man räknar antalet möjliga, närmare 39932 om man räknar på dem för och efternamn jag har, det lär ta en stund alltså, men men.

Nån som kan detta?

[AMD]ZmasterMedlem sedan mars 20021 716 inlägg
#2

Är detta svårt?

spangoMedlem sedan juni 20008 205 inlägg
#3

Inte alls. Jag orkar inte skriva riktig kod, men här är lite pseudokod:

förnamn är en array med alla förnamnen.
efternamn är en array med alla efternamnen.
för varje namn i förnamn:
    för varje namn i efternamn:
        skriv ut det aktuella förnamnet och det aktuella efternamnet.

Se så. Spring iväg och implementera nu! ;)

[AMD]ZmasterMedlem sedan mars 20021 716 inlägg
#4

Tack tack, problemet är bara att jag knappt kan asp :P
Någon som kanske kan hjälpa mig där också? :)

nikoMedlem sedan juni 20022 599 inlägg
#5

Om jag får bestämma så gör du om dina filer till XML:

namn.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xmlrot>
<namn>Stellan</namn>
<namn>Steven</namn>
<namn>Sixten</namn> 
</xmlrot>

efternamn.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xmlrot>
<efternamn>Lindqvist</efternamn>
<efternamn>Broberg</efternamn>
<efternamn>Karlsson</efternamn> 
<efternamn>Moberg</efternamn> 
</xmlrot>

.. och kör sen så här:

<%
Set FirstNames = Server.CreateObject("MSXML2.DOMDocument")
FirstNames.async = False
FirstNames.Load Server.MapPath("namn.xml")
Set LastNames = Server.CreateObject("MSXML2.DOMDocument")
LastNames.async = False
LastNames.Load Server.MapPath("efternamn.xml")
Set lstFirstNames = FirstNames.getElementsByTagName("namn")
Set lstLastNames = LastNames.getElementsByTagName("efternamn")
For i = 0 To lstFirstNames.length - 1
    For j = 0 To lstLastNames.length - 1
        response.write lstFirstNames.Item(i).firstChild.nodeValue & " " & lstLastNames.Item(j).firstChild.nodeValue 

& "<br>"
    Next
Next
%>
nikoMedlem sedan juni 20022 599 inlägg
#6

Variant utan XML:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Server.MapPath(".") & ";Extensions=asc,csv,tab,txt;"
set rs = conn.execute("SELECT * from namn.txt, efternamn.txt order by 1")
While Not rs.EOF
	Response.Write  rs(0) & " " & rs(1) & "<br>"
	rs.MoveNext 
Wend
%>

OBS: Du måste lägga en blankrad överst i namn.txt och efternamn.txt.

SebbeMedlem sedan jan. 20032 285 inlägg
#7

Variant i FSO.

<%
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile("namn.txt")
i = 0
Do Until objTS.AtEndOfStream
  arrNamn(i) = objTS.ReadLine
Loop
objTS.Close
Set objTS = Nothing

Set objTS = objFSO.OpenTextFile("efternamn.txt")
i = 0
Do Until objFSO.AtEndOfStream
  arrEfter(i) = objTS.ReadLine
Loop
objTS.Close
Set objTS = Nothing
Set objFSO = Nothing

For j = 0 To UBound(arrNamn)
  For k = 0 To UBound(arrEfter)
    Response.Write(arrNamn(j) & " " & arrEfter(k) & "<br>")
  Next
Next
%>

Otestad kod, så säg till om det inte funkar. :)

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

Men skulle namnen inte ligga slumpmässigt?

[AMD]ZmasterMedlem sedan mars 20021 716 inlägg
#9

niko skrev:

Variant utan XML:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Server.MapPath(".") & ";Extensions=asc,csv,tab,txt;"
set rs = conn.execute("SELECT * from namn.txt, efternamn.txt order by 1")
While Not rs.EOF
	Response.Write  rs(0) & " " & rs(1) & "<br>"
	rs.MoveNext 
Wend
%>

OBS: Du måste lägga en blankrad överst i namn.txt och efternamn.txt.

Körde på det, perfekt, funkar precis som jag ville :)
Tack! Tack alla andra också som gjorde sina versioner! :)

Jesper TMedlem sedan nov. 20017 144 inlägg
#10

order by 1,2

Om du även vill sortera efternamnet i bokstavsordning.

LaspMedlem sedan juli 200012 980 inlägg
#11

Om du vill ha namn efter frekvens (förekomst) har jag lite material.
Har PM át dig om detta. Hör bara av dig.

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)