gregganMedlem sedan jan. 2004678 inlägg Hej,
Hur gör jag om jag vill hämta en viss del av en querystring?
för variabeln sms i querystringen så kan det skickas med 3 ord, om det gör det så vill jag bara hämta sista ordet. Hur löser jag detta?
Ex.
blbla.aspx?nr=0000&sms=greggan
alt.
blbla.aspx?nr=0000&sms=tihi+tanka+greggan
Det verkar som att det skickas lite olika information till mitt script, ibland bara namnet och ibland alla prefixen. Hur gör jag för att dels ta reda på att det är fler än ett ord, och sen för att bara plocka ut det sista om det är flera?
erkaMedlem sedan dec. 19996 522 inlägg Kör en split på din querystring, räkna längden på din array, plocka ut sista positionen
gregganMedlem sedan jan. 2004678 inlägg okej, det låter bra. jag är ganska ringrostig, du har inte lust att ge lite kodhints på vägen bara så att jag kommer igång? :r
gregganMedlem sedan jan. 2004678 inlägg Nåt i stil med detta kanske:
Dim anv As Array = Split(request.querystring(sms), "+")
if 'kolla antalet element i arrayen, hur gör jag detta?
nickname = anv(2)
else
nickname = anv(0)
end if
Skulle detta kunna funka, och i så fall, hur räknar jag antalet element i arrayen?
Kan man köra typ anv.length?
emissionMedlem sedan dec. 19996 721 inlägg Ett plustecken i en querystring är egentligen ett mellanslag, så splitta på mellanslag i stället
gregganMedlem sedan jan. 2004678 inlägg Nu får jag fel...
Compiler Error Message: BC30311: Value of type 'String' cannot be converted to '1-dimensional array of System.Object'.
Dim anv As Array = Split(txt, " ")
Jag tror att det är det där som spökar... txt är i det här fallet request.querystring("sms") som innehåller: tihi+tanka+greggan
Vad är felet?
gregganMedlem sedan jan. 2004678 inlägg oj, nej felet var en riktig klantig grej. anropade en funktion när jag deklarerade en funktion.
lösningen blev såhär:
function convertnamn(txt)
Dim anv As Array = Split(txt, " ")
if Ubound(anv) > 1 Then
convertnamn = anv(2)
else
convertnamn = txt
end if
end function
Där txt är en querystring som kan se ut på två olika sätt.
Tack så mycket för hjälpen! :birp
Bör inte din if vara större än 2?:
if Ubound(anv) > 2 Then
En array är väl 0-baserad, så 2 element i arrayen är alltså anv(0) och anv(1). Om du plockar anv(2) så är alltså ubound minst 3....
(du får allstå ett fel om det skulle vara 2 ord i din array istället för 3)
gregganMedlem sedan jan. 2004678 inlägg det stämmer ju. helt rätt av dig. :)
men egentligen spelar det ingen roll eftersom alternativen som finns är 1 eller 3 ord, så det gör ingen större skillnad för min kod. men det är ju helt rätt som du skriver. :)
Man ska aldrig anta något vad gäller querystrings. Om jag skulle se en url som ser ut såhär "blbla.aspx?nr=0000&sms=tihi+tanka+greggan" så skulle jag vara frestad att testa andra parametrar för något så spännande som en parameter vid namn sms! :)
gregganMedlem sedan jan. 2004678 inlägg jo jag förstår det, men grejjen är att folk får inte veta om att den där adressen finns alls. den adressen tar emot sms, och om folk visste om adressen till den så skulle dom kunna låtsas skicka sms genom att gå in på adressen och på så vis spara in pengar som jag tjänar på dom :P
men den sms-servern som skickar sms till min sida har precis bytt sätt som den skickar på och det verkar inte gå helt felfritt. förut skickade den bara ett ord, användarnamnet, till mig, men nu ska den skicka hela texten, tre ord, men det verkar inte alltid bli så. därför ska den kolla om det är 1 eller 3 ord. ;)
men jag förstår återigen vad du menar, men just i det här fallet spelar det ingen roll. :)