Avatar billede hh_appel Nybegynder
23. oktober 2001 - 23:26 Der er 5 kommentarer og
3 løsninger

Tjek om variabel indeholder både tekst og tal

Hej,

Jeg skal have tjekket en streng for, om den indeholder både tekst og tal.

Dvs. at en streng som zxc123 vil være okay, hvorimod 123456 eller zxcvbn ikke er okay... Hvordan sikrer jeg at variablen BÅDE har tal og bogstaver? (Antallet af hver type er underordnet - 1 af hver slags er altså nok, selvom der så er flere af den anden slags.)
Avatar billede eagleeye Praktikant
23. oktober 2001 - 23:37 #1
Der findes vist ikke direkte en function til det så jeg har prøvet at lavet en:


function isAlfanumeric(val_string)
validchars = \"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÆæØøÅå\"
validnumbers = \"1234567890\"
charFound = false
numberFound = false
for i = 1 to len(val_string)
  if instr(1, validchars, val_string(i)) = 0 then
    if instr(1, validnumbers, val_string(i)) = 0 then
      isAlfanumeric = False
      exit function
    else
      numberFound = true
    end if
  else
    charFound = true
  end if
next
isAlfanumeric = (numberFound AND charFound)
end function
Avatar billede nute Nybegynder
24. oktober 2001 - 00:10 #2
eagleeye >> hmm....den vil ikke fungere. denne gjør derimot:

response.write checkForValidChars(\"kj1\")

function checkForValidChars( str )
    chars = \"abcdefghijklmnopqrstuvwxyzæøå\"
    nums = \"1234567890\"
    charFound = false
    numFound = false
    for i = 1 to LEN( str )
      tmpChar = MID( str, i, 1 )
        \' Sjekker for bokstav
        if( InStr( chars, tmpChar ) > 0 AND NOT charFound ) then
          charFound = true
        end if
        \' Sjekker for tall
        if( InStr( nums, tmpChar ) > 0 AND NOT numFound ) then
          numFound = true
        end if
        \' Exit hvis begge er funnet
        if( charFound AND numFound ) then
          exit for
        end if
    next
    checkForValidChars = charFound AND numFound
end function
Avatar billede nute Nybegynder
24. oktober 2001 - 00:11 #3
hov...denne linje:

tmpChar = MID( str, i, 1 )

skal være

tmpChar = LCase( MID( str, i, 1 ) )
Avatar billede eagleeye Praktikant
24. oktober 2001 - 00:22 #4
det sku også rigtig har lige rettet så den virker:

function isAlfanumeric(val_string)
validchars = \"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÆæØøÅå\"
validnumbers = \"1234567890\"
charFound = false
numberFound = false
for i = 1 to len(val_string)
  if instr(1, validchars, mid(val_string,i,1)) = 0 then
    if instr(1, validnumbers, mid(val_string,i,1)) = 0 then
      isAlfanumeric = False
      exit function
    else
      numberFound = true
    end if
  else
    charFound = true
  end if
next
isAlfanumeric = (numberFound AND charFound)
end function
Avatar billede eagleeye Praktikant
24. oktober 2001 - 00:30 #5
nute>> prøv din med \"h5%\":
checkForValidChars(\"h5%\")  den returnere true!! det jo ikke helt rigtigt.
Avatar billede nute Nybegynder
24. oktober 2001 - 00:35 #6
eagleeye >> det står ingenting i \"oppgaveteksten\" at spesialtegn ikke er tillatt. Det kan godt være jeg har misforstått spørsmålet...

/nute
Avatar billede eagleeye Praktikant
24. oktober 2001 - 00:37 #7
nej men... den stopper ukritisk hvis et bogstav og et tal er fundet.. hvis jeg skriver \"%5\" returnere den false?!!

der står: tal og bogstaver
Avatar billede jespernaur Nybegynder
24. oktober 2001 - 00:40 #8
Du kan også bruge regulære udtryk:

  Set regEx = New RegExp
  regEx.Pattern = \".*[\\d].*[A-ZÆØÅa-zæøå].*|.*[A-ZÆØÅa-zæøå].*[\\d].*\"
  Set Matches = regEx.Execute(strText)

  if Matches.Count = 0 then
      \' Fejl, strText indeholder ikke både ciffer og bogstav
  else
      \' OK, strText indeholder mindst 1 ciffer og mindst 1 bogstav
  end if
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