Avatar billede phoenix_2004 Nybegynder
04. februar 2005 - 00:20 Der er 10 kommentarer og
1 løsning

Tæl ord i SPLIT funktionen

Jeg kunne godt tænke mig at kunne tælle orderne i min string.

F.eks (taget fra mit kode problem)

<% If Dyrliste(i) = 1 Then %>
<td height="200">&nbsp;</td>
<% ELSE %>
<td height="10">&nbsp;</td>
<% End If %>

Hvis jeg kun har 1 dyr i listen så skal den anvende den øverste TD og hvis der over, den nederste. Hvordan kan jeg gøre det ?
Avatar billede eagleeye Praktikant
04. februar 2005 - 08:15 #1
Jeg har en funktion som kan tælle ord i en streng:
<%
Function countWords(ByVal str)
  If IsNull(str) Then Exit Function
  Dim RegEx
  Set RegEx = New RegExp
  RegEx.Pattern = "\s+"
  RegEx.Global = True
  countWords = UBound(Split(RegEx.Replace(Trim(Replace(str,vbCrLf," "))," ")," ")) + 1
End Function
%>

Et lille eksempel:
<% 
str = "Hej dette er en test." 
antalOrd = countWords(str)
Response.Write (antalOrd)
%>


Hvis du bruger funtionen bliver din if sætning sådan her:

<% If countWords(Dyrliste(i)) = 1 Then %>
Avatar billede fennec Nybegynder
04. februar 2005 - 08:21 #2
Hvis du allerede har brugt split() funktionen på strengen (så du har et array), kan du bruge uBound() funktionen. Den tæller antal elementer i et array:

antal = uBound(Dyrliste)
Avatar billede phoenix_2004 Nybegynder
04. februar 2005 - 15:21 #3
eagleeye: Jeg får fejlen: syntaksfejl i Function countWords(ByVal str)
Avatar billede phoenix_2004 Nybegynder
04. februar 2005 - 15:24 #4
fennec: Ja jeg har brugt split() funktionen, men ubound() ville ikke så meget tælle 1 ord i array'en.
Avatar billede phoenix_2004 Nybegynder
04. februar 2005 - 15:29 #5
Jeg vil der til sige, at jeg bruger en databaseID så der er tal der kommer til at stå i dyrliste(i), men alligevel skal den tælle tallene.
Avatar billede eagleeye Praktikant
04. februar 2005 - 16:37 #6
Hvad indeholder dyrliste?  Er det et array med tal?
hvordan laver du array?
Avatar billede phoenix_2004 Nybegynder
04. februar 2005 - 18:31 #7
eagleeye: Ja der er med tal og jeg laver der som følgende:

URL'en : /indhegning?DyrID=2-4-6-88

Derefter følger denne kode:

dyrliste = Split(dyrID, "-")

For i = 0 to Ubound(dyrliste)
Set rstSimpleP = cnnSimpleP.Execute("SELECT * FROM dyr WHERE dyrID = " & dyrliste(i) & " ")
Udskrivdyrliste()
Next

Der er så hvis jeg kun har ET ID. f.eks ?DyrID=3, 1 udskrivning at jeg skal have den lange TD ellers den korte TD.
Avatar billede eagleeye Praktikant
05. februar 2005 - 09:56 #8
Ok på den måde men så ville jeg mene dette virker, Ubound tæller antal items i arrayet +1 fordi første item har værdien 0.

<% If  int(Ubound(Dyrliste)+1) = int(1) Then %>
  <td height="200">&nbsp;</td>
<% ELSE %>
  <td height="10">&nbsp;</td>
<% End If %>
Avatar billede phoenix_2004 Nybegynder
05. februar 2005 - 13:46 #9
Jeg får denne fejl i den øverste sætning:

Der opstod en Microsoft VBScript-kompileringsfejl fejl '800a0408'

Tegnet er ugyldigt

<% If  int(Ubound(Dyrliste)+1) = int(1) Then %>
Avatar billede eagleeye Praktikant
05. februar 2005 - 14:54 #10
hum så prøv sådan her jeg kan ikke umiddelbart set nogle ugyldige tegn:

<% If Ubound(Dyrliste)+1 = 1 then %>
Avatar billede phoenix_2004 Nybegynder
05. februar 2005 - 19:57 #11
Jeg takker. Kigger lige lidt selv på den.
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