login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nagaan of string een letter of cijfer is (Opgelost)

Offline koenflore - 17/05/2009 16:15 (laatste wijziging 17/05/2009 16:32)
Avatar van koenfloreLid Hallo,

Voor ingave van een positie op een spelbord, worden 2 waarden verwacht: de eerste moet een letter zijn (a,b,c,...) voor de kolom aan te duiden, de 2e een int voor de rij.
Graag zou ik dit laten ingeven door de gebruiker als 1 waarde: deze geeft dan bijvoorbeeld in "a1" gevolgd door enter.
Mijn oplossing was door dit te laten inlezen als een string en dan via substring te splitsen en te converteren in een char en een int.
Probleem is echter dat er moet kunnen gecontroleerd worden of de ingave effectief eerst een letter is, en dan een cijfer.
Heeft iemand van jullie een idee hoe dit moet?
Alvast bedankt voor het antwoord.

groeten

Koen

5 antwoorden

Gesponsorde links
Offline Wim - 17/05/2009 19:29
Avatar van Wim Crew algemeen http://www.regular-expressions.info/

Op deze website vind je alle info die je nodig hebt
Offline Abbas - 17/05/2009 23:27
Avatar van Abbas Gouden medaille

Crew .NET
Om na te kijken of een invoer numeriek is kan je de functie "IsNumeric()" gebruiken. Het eerste kan je nagaan door te proberen te Converten naar een Char. En anders kan je gebruiken wat wimmarien al aangaf! 
Offline koenflore - 18/05/2009 11:42 (laatste wijziging 19/05/2009 23:48)
Avatar van koenflore Lid Reeds bedankt voor het snelle antwoord. Deze avond probeer ik jullie voorstellen uit.

Groeten

Koen

Ondertussen een makkelijke oplossing gevonden via de LIKE operator, die me onbekend was:

  1. Public Function IsAlfabetisch(ByRef teControlerenString As String) As Boolean
  2. For i As Integer = 0 To teControlerenString.Length - 1
  3. If Not UCase(teControlerenString(i)) Like "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" Then
  4. Return False
  5. End If
  6. Next
  7. Return True
  8. End Function

Groeten

Koen
Offline Abbas - 19/05/2009 23:46
Avatar van Abbas Gouden medaille

Crew .NET
Als je een invoer hebt van maar twee waardes waarvan enkel de eerste een letter moet zijn, waarom dan een functie gebruiken met een String en dan loopen door heel die string als het maar om één teken gaat dat je dan moet controleren. Dan kan je het bijvoorbeeld beter zo doen:

  1. Dim strInvoer As String = myTextBox.Text
  2.  
  3. If Not UCase(strInvoer(0)) Like "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" Then
  4. 'Foute invoer: eerste teken is geen letter
  5. Else
  6. If Not IsNumeric(strInvoer(1))
  7. 'Foute invoer: tweede teken is geen cijfer
  8. Else
  9. 'WEL geldige invoer
  10. End If
  11. End If

Offline koenflore - 31/05/2009 12:17
Avatar van koenflore Lid Terechte opmerking. In m'n programma roep ik de code echter als volgt op:

If IsAlfabetisch(positie.Substring(0, 1)) And IsNumeric(positie.Substring(1,1) then ...

Op die manier komt het ophetzelfde neer en blijft de IsAlfabetic-methode nog algemener bruikbaar, denk ik.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.183s