webForumDet fria alternativet

Del av querystring

.NET

11 svar · 529 visningar · startad av greggan

Medlem sedan jan. 2004678 inlägg
Frågan#1

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?

Medlem sedan dec. 19996 522 inlägg
#2

Kör en split på din querystring, räkna längden på din array, plocka ut sista positionen

Medlem sedan jan. 2004678 inlägg
#3

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

Medlem sedan jan. 2004678 inlägg
#4

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?

Medlem sedan dec. 19996 721 inlägg
#5

Ett plustecken i en querystring är egentligen ett mellanslag, så splitta på mellanslag i stället

Medlem sedan juli 2003465 inlägg
#6

greggan skrev:

if 'kolla antalet element i arrayen, hur gör jag detta?
UBound(anv)
Medlem sedan jan. 2004678 inlägg
#7

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?

Medlem sedan jan. 2004678 inlägg
#8

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

Medlem sedan juli 2004206 inlägg
#9

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)

Medlem sedan jan. 2004678 inlägg
#10

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. :)

Medlem sedan juli 2004206 inlägg
#11

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! :)

Medlem sedan jan. 2004678 inlägg
#12

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. :)

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)