Avatar billede gummisko Nybegynder
18. marts 2005 - 08:53 Der er 10 kommentarer og
3 løsninger

Omdannelse af en tekststreng til array

Kære guruer
Skal lave asp-side, som fra en formular på en html-side modtager variablen QuizResult, som er en tekststreng.

Denne streng ser sådan ud:
Core Data "Status","Raw Score","Passing Score","Max Score","Min Score","Time" "incomplete","20","28","40","0","00:03:47" "Date","Time","Score","Interaction ID","Objective ID","Interaction Type","Student Response","Result","Weight","Latency" "07/18/05","07:49:47","0","


Læg mærke til at starten indeholder Core Data UDEN omgrænsende ""
Desuden kan antallet af poster variere efter hvor mange spørgsmål som er besvaret.

Så øvelsen går på at
1.først fjerne ordet Core Data og alle ""
2.lave et array hvor hver post i strengen listes
3.udskrive værdien af post nr. 8,9,10

Jeg har lidt tilsvarende i javascript som viser funktionen, MEN DET SKAL VÆRE I ASP!!


Eksempel fra java script:
<script type="text/javascript">
<!-- Begin
var gstrEmailTo = "";
var gstrEmailSubject = "";
var gstrEmailBody = "";
var myVar = 0;

function appendEmailBody(strBody)
{
    var temp_str = strBody;
    while(temp_str.indexOf("|") > -1)
    {
        temp_str = temp_str.substr(0,temp_str.indexOf("|")) + "\r" + temp_str.substr(temp_str.indexOf("|") + 1)
    }
    gstrEmailBody += temp_str + "\r";
}

function sendMail()
{

    // strip the word Core Data out of the results
    var stripCoreData = gstrEmailBody.replace("Core Data", "");
    // remove the double quotes
    var stripQuotes = stripCoreData;
    while(stripQuotes.indexOf("\"") !=-1){
    stripQuotes=stripQuotes.replace("\"", "");
    }
    // turn results into an array to access single items
    var results_array = stripQuotes.split(",");

    // assign variables
    var RawScore = results_array[7];
    var MaxScore = results_array[8];
    var MinScore = results_array[9];
    var Accuracy = RawScore/MaxScore;
    Accuracy = Accuracy*100;
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:00 #1
Noget i den her stil:

strTest = Core Data "Status","Raw Score","Passing Score","Max Score","Min Score","Time" "incomplete","20","28","40","0","00:03:47" "Date","Time","Score","Interaction ID","Objective ID","Interaction Type","Student Response","Result","Weight","Latency" "07/18/05","07:49:47","0","

strTest = Replace(strTest,"Core Data ","")
strTest = Replace(strTest,""","")

arrTest = split(strTest,",")
Response.write arrTest(7)
Response.write arrTest(8)
Response.write arrTest(9)
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:03 #2
ahh, problemet er at du bruger " i din string, har du selv mulighed for at ændre på hvordan stringen ser ud?
Avatar billede gummisko Nybegynder
18. marts 2005 - 09:04 #3
Flot hastighed du har!!!!!!!!!!!!
Kan man sætte strTest = request("Quiz Result")
som er variablen fra html-sidens formular
vh
Bjarne
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:20 #4
det kan du nemt, men der er stadig et problem med "
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:22 #5
prøv lige om det her virker:

strTest = Trim(request("Quiz Result"))

strTest = Replace(strTest,"Core Data ","")
strTest = Replace(strTest,""","")

arrTest = split(strTest,",")
Response.write arrTest(7)
Response.write arrTest(8)
Response.write arrTest(9)
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:30 #6
så tror jeg den virker:

bolWasPosted = Request.ServerVariables("HTTP_METHOD") = "POST"
    If bolWasPosted Then
    strTest = Trim(request("Quiz Result"))

    strTest = Replace(strTest,"Core Data ","")
    strTest = Replace(strTest, """", "")
   
    arrTest = split(strTest,",")
    Response.write arrTest(7)
    Response.write arrTest(8)
    Response.write arrTest(9)
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:31 #7
ved den string du har vist, får jeg følgende ud, er det rigtigt?:

28
40
0
Avatar billede moejensen Nybegynder
18. marts 2005 - 09:35 #8
hvis ikke det er de rigtige tal, kan du indsætte følgende tre linier

For t = 0 to UBound(arrTest)
      Response.write "Plads " &t & ": "&arrTest(t) &"<br>"
  Next

og finde ud af hvilken placering i arrayet de værdier du skal bruge har.
Avatar billede gummisko Nybegynder
18. marts 2005 - 09:55 #9
okay - so far so good

Nu skal besvarelsesprocenten findes:
    Response.write (arrTest(7)/arrTest(8)) & "%"


eller hvordan???og der skal kun være 1 decimal!!!!???
Avatar billede moejensen Nybegynder
18. marts 2005 - 10:12 #10
det ser ganske rigtig ud.
Avatar billede moejensen Nybegynder
18. marts 2005 - 10:14 #11
hvis du vil afrunde til 1 decimal, så gør du således:

Response.write round((arrTest(7)/arrTest(8)),1) & "%"
Avatar billede gummisko Nybegynder
18. marts 2005 - 10:25 #12
tak for hjælpen - du har reddet min dag!!!!!!!!!!!!!!!!!
Avatar billede moejensen Nybegynder
18. marts 2005 - 10:30 #13
det var så lidt, og god weekend.
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