[VB.NET] Getallen gescheiden door ',' en '-' uit str halen

Pagina: 1
Acties:
  • 72 views sinds 30-01-2008

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
In een textbox op een ASP.NET webform kan de gebruiker getallen invoeren die artikelgroepen vertegenwoordigen. Deze moet dat op de volgende wijze kunnen doen:

- gescheiden door komma's: 3,5,9 (of met spatie's: 3, 5 , 9)
- gescheiden door streepje (van - t/m): 5-9
- combinatie van beiden: 3,5-7,9,12-16,17

Eerst moeten de spaties er uitgefilterd worden en vervolgens de juiste artikelgroepen (nummers) op volgorde in een array worden gezet. De spaties er uit halen lukt wel:

Visual Basic .NET:
1
Dim sGroepen As String = txtArtGrSel.Text.Replace(" ", "")


Maar hoe nu verder?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Split gebruiken? Eerst splitten op "," en daarna op "-" lijkt me logisch...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Ik zou eerst inderdaad ook de spaties weghalen.

Daarna een array maken waarin je alle artikelen 1 voor 1 zet. Is altijd handig om door heen te ittereren (zo heet dat toch?).

Dan ga je karakter voor karakter door de string heen wandereln...

Je verwacht als eerste een getal, zoniet dan error.
Voeg getal toe aan je array, en zet hem in een temp var.
Bekijk volgende karakter, is dat een comma gaan dan verder.
Is het een -, dan kijk je naar getal daar weer achter en voeg in je array de getallen vanaf je temp var tot dat getal toe. Geen getal achter de - dan error.

Je gaat karakter voor karakter door de string, maar zodra je een getal tegen komt (bijvoobeeld de 5 van 51, dan moet je zorgen dat je niet met 5 gaat werken maar opzoek gaat naar een teken dat het getal afsluit, een - of , dus).

Hiermee moet het te doen zijn.

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
RobIII schreef op 14 juli 2004 @ 12:13:
Split gebruiken? Eerst splitten op "," en daarna op "-" lijkt me logisch...
OK, krijg ik voor elkaar. Maar hoe zorg ik er na het splitten op "," voor dat 5-9 als 5, 6, 7, 8, 9 in de array wordt gezet?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

EmilneM schreef op 14 juli 2004 @ 12:22:
[...]


OK, krijg ik voor elkaar. Maar hoe zorg ik er na het splitten op "," voor dat 5-9 als 5, 6, 7, 8, 9 in de array wordt gezet?
Uh wat dacht je van middels Convert.ToInt32 de 2 getallen naar int converteren en dan met een for-loopje eroverheen waggelen? :?

Professionele website nodig?


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
curry684 schreef op 14 juli 2004 @ 12:26:
[...]

Uh wat dacht je van middels Convert.ToInt32 de 2 getallen naar int converteren en dan met een for-loopje eroverheen waggelen? :?
Heb nu het volgende......vind het nog niet erg netjes maar volgens mij komt het in de buurt. Hoe maak ik dit netter? Hoe voeg ik de waarden toe aan de array?

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim sGroepen As String = txtArtGrSel.Text.Replace(" ", "")
Dim arrGroepen As Array

arrGroepen = Split(sGroepen, ",")

Dim iCount As Integer = arrGroepen.Length - 1
Dim iIndex As Integer = -1

Do While iIndex < iCount
       iIndex += 1

       Dim Array2 As Array = Split(CStr(arrGroepen(iIndex)), "-")
       Dim iTeller As Integer
       
       For iTeller = CInt(Array2(0)) To CInt(Array2(1))
               'Toevoegen aan Array
       Next
Loop

[ Voor 13% gewijzigd door EmilneM op 14-07-2004 12:40 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ja doei, "Hoe voeg ik de waarden toe aan de array"... :X

Lees eens een boek of druk op F1, dit is al de tigste keer dat je hier aan het handje genomen wil worden.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.