C#: tel aantal keren dat string voorkomt in txt file

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Ik ben momenteel bezig met het bouwen van een soort hotelreserveringssysteem waarbij elke reservering wordt opgeslagen in één bestand. Ik wil daarbij middels een label kunnen aangeven hoeveel reserveringen er allemaal zijn. Mijn idee was een string te pakken die bij elke reservering hetzelfde is, en dat zijn allemaal van die middenstreepjes (-), bedoeld als een soort divider.

Nu wil ik dus het aantal keer dat zo'n rij met streepjes wordt geteld. Vraag: hoe doe ik dat? Ik vermoed dat ik hierbij een loop moet toepassen, maar ik kan het mis hebben. :+

Dit is nu het stukje code gebruikt voor het wegschrijven van data naar een bestand:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
StreamWriter sw = new StreamWriter(tbxFilePath.Text, true);
            sw.WriteLine("Naam: " + tbxNaam.Text);
            sw.WriteLine("Geboortedatum: " + dateBirthDate.Value.ToShortDateString() + " (Leeftijd: " + leeftijd + ")");
            sw.WriteLine("Geslacht: " + cboxGeslacht.SelectedItem.ToString());
            sw.WriteLine("Adres: " + tbxAdres.Text);
            sw.WriteLine("Woonplaats: " + tbxWoonplaats.Text);
            sw.WriteLine("Kamer: " + numericKamer.Value);
            sw.WriteLine("Aantal: " + numericAantal.Value);
            sw.WriteLine("Aankomst: " + dateTP1.Value.ToShortDateString());
            sw.WriteLine("Vertrek: " + dateTP2.Value.ToShortDateString());
            sw.WriteLine("Ontbijt: " + ckBoxOntbijt.Checked.ToString());
            sw.WriteLine("Diner: " + ckBoxDiner.Checked.ToString());
            sw.WriteLine("------------------------------");
            sw.Close();

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10

Alle reacties


Acties:
  • +1 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 06:35
Waarom gebruik je hier geen database voor? Of zelfs misschien een csv bestand? Wat ga je nu doen als iemand bij de kamer het aantal streepjes invult etc?

om te antwoorden: Je kunt dit oplossen met regex.. eventueel.

[ Voor 49% gewijzigd door Webgnome op 09-01-2018 12:32 ]

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 21:27

pistole

Frutter

Hint: regular expression, match, count. Zoekt en gij zult vinden :)

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • Crahsystor
  • Registratie: Februari 2009
  • Laatst online: 16-09 11:16
Kun je niet makkelijker het aantal regels tellen? Als iedere reservering een gelijk aantal regels inneemt, is het een kwestie van het aantal regels tellen en delen door dat vaste aantal. Wil je toch string matchen, kun je natuurlijk weer alles regel voor regel inlezen en proberen te matchen met de divider.

Addicted to silent computing


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Webgnome schreef op dinsdag 9 januari 2018 @ 12:31:
Waarom gebruik je hier geen database voor? Of zelfs misschien een csv bestand? Wat ga je nu doen als iemand bij de kamer het aantal streepjes invult etc?

om te antwoorden: Je kunt dit oplossen met regex.. eventueel.
Geloof me, dat had ik graag willen doen. Ik weet immers al hoe je middels een database zoiets kunt doen. Maar in de opdracht die ik heb gekregen is één van de vereisten dat je een txt-bestand gebruikt. :'(

Maar ik zal eens kijken naar dat regex. Weleens van gehoord, maar nog nooit mee gewerkt. :P
Crahsystor schreef op dinsdag 9 januari 2018 @ 12:32:
Kun je niet makkelijker het aantal regels tellen? Als iedere reservering een gelijk aantal regels inneemt, is het een kwestie van het aantal regels tellen en delen door dat vaste aantal. Wil je toch string matchen, kun je natuurlijk weer alles regel voor regel inlezen en proberen te matchen met de divider.
Ik kijk ook hier naar. Wellicht inderdaad een betere oplossing, zeker met het idee in het achterhoofd waar Webgnome het over had.

[ Voor 30% gewijzigd door DutchDeafBoy op 09-01-2018 12:37 ]

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • ThoNohT
  • Registratie: September 2006
  • Laatst online: 17-09 11:03
Er zijn hier zovele routes mogelijk. De makkelijkste is waarschijnlijk loopen over alle regels in het bestand, en elke keer dat je je divider tegenkomt een tellertje op te hogen.

Regular expressions zijn natuurlijk ook mogelijk, maar pas wel op met regex zien als de heilige graal voor alles. In dit geval is waarschijnlijk een simpele loop net zo efficient, en makkelijker te begrijpen.

Aantal regels tellen en delen kan ook, maar stel dat je in de toekomst een extra regel weg gaat schrijven, dan zal dit onderuit gaan. Then again, als je je separator aan gaat passen, dan zal dit ook onderuit gaan.

Een simpel tekstbestand is simpelweg niet de netste oplossing hiervoor. Elk soort formaat dat formattering forceert is al beter. Dit zou ini kunnen zijn, waarin elke reservering een sectie voorstelt. Je kunt er xml van maken, waarbij het al helemaal makkelijk wordt om gewoon alle reservering elementen te tellen.

Een database kan ook, al is het wellicht voor een opdracht wat overkill, en ik lees net dat dat niet de bedoeling is. Let wel, eigenlijk is dat tekstbestand ook gewoon een vorm van een database, alleen implementeer je alle logica nu zelf.

Nog een andere mogelijkheid: een bestand per reservering? Dan is het slechts een kwestie van bestanden tellen.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@DutchTech

Je kunt gewoon de file inlezen en dan met een loop over alle regels itereren. Dan kun je met die regels (1 reservering per regel kennelijk) doen wat je wil, bijvoorbeeld een teller ophogen als deze '-' bevat. En ik vermoed dat je schoolopdrachten nog wel iets complexer dan simpelweg regels tellen worden, dus dan kun je deze logica daar ook toepassen.
pistole schreef op dinsdag 9 januari 2018 @ 12:31:
Hint: regular expression, match, count. Zoekt en gij zult vinden :)
Hint: Hij doet een simpele sub-string search. Regexes zijn geen gouden hamer. En ze tellen ook geen voorkomens.

https://niels.nu


Acties:
  • +2 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 03:43
Serialize alles naar json of xml en geef het bestand een .txt extensie. Beetje valsspelen ivm de opdracht misschien, maar technisch gezien nog steeds correct :)

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • DonChaot
  • Registratie: April 2012
  • Laatst online: 17-09 16:44
DutchTech schreef op dinsdag 9 januari 2018 @ 12:36:
[...]
Maar in de opdracht die ik heb gekregen is één van de vereisten dat je een txt-bestand gebruikt. :'(
een csv bestand is een txt bestand.

Waarom niet gewoon alle info op 1 regel, regels tellen en klaar.

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
DonChaot schreef op dinsdag 9 januari 2018 @ 12:44:
[...]

een csv bestand is een txt bestand.

Waarom niet gewoon alle info op 1 regel, regels tellen en klaar.
Dan gaat het er niet netjes uitzien. Bedoeling is dat dat tekstbestand gewoon netjes uitgelezen wordt, zoals hier:

Afbeeldingslocatie: http://i67.tinypic.com/2vlplau.png

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • DonChaot
  • Registratie: April 2012
  • Laatst online: 17-09 16:44
in je Csv zet je er comma's tussen. Op het moment dat je het op het scherm toont vervang je die door newline. Volgens mij is je resultaat dan hetzelfde?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DonChaot schreef op dinsdag 9 januari 2018 @ 12:54:
in je Csv zet je er comma's tussen. Op het moment dat je het op het scherm toont vervang je die door newline. Volgens mij is je resultaat dan hetzelfde?
Nee, dan mis je de "labels" zoals "Naam", "Geboortedatum" etc. Maar dat is helemaal niet erg. TS moet leren data van overig te scheiden. Je kunt prima in een CSV alle waardes zetten (desnoods inc. labels maar dat is niet gebruikelijk); de labels zet je er dan gewoon "in code" voor.

Maar om op de vraag van @DutchTech terug te komen: simpeler dan dit kan 't niet:

code: pseudo
1
2
3
4
5
6
7
8
var searchString = "------------------------------"
var count = 0

foreach (line in file)
  if line equals searchString
    count++

print count

[ Voor 19% gewijzigd door RobIII op 09-01-2018 12:59 ]

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


Acties:
  • +1 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 17-09 12:52

P_Tingen

omdat het KAN

Dit riekt een beetje naar een help-mij-met-mijn-huiswerk topic .....

... en gaat over tot de orde van de dag


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
P_Tingen schreef op dinsdag 9 januari 2018 @ 12:59:
Dit riekt een beetje naar een help-mij-met-mijn-huiswerk topic .....
Daar is helemaal niets mis mee tenzij iemand alles laat voorkauwen / geen eigen inzet pleegt.

[ Voor 10% gewijzigd door RobIII op 09-01-2018 13:00 ]

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


Acties:
  • 0 Henk 'm!

  • ThoNohT
  • Registratie: September 2006
  • Laatst online: 17-09 11:03
Als echt tekst in een enkel bestand moet zijn, en je het is ook nog een eis dat die tekst letterlijk wordt weergegeven, dan zou ik het formaat van dit bestand iets herkenbaars geven, wat ook alleen bestaat met als doel om herkenbaar te zijn en dus nooit hoeft te veranderen. Op deze manier staat het bestandsformaat dus in dienst van je benodigde functionaliteit, in plaats van dat je functionaliteit moet gaan verzinnen om met een bestandsformaat om te gaan wat hier niet in voorziet.

Bijvoorbeeld, geef elke reservering een header, in een formaat wat verderop zeker niet wordt gebruikt.
Bijvoorbeeld een ini-achtig formaat.
Zet [Reservering] boven elke reservering, en tel deze dingen.

Wil je ze ook nog uniek maken, geef ze dan allemaal een id, dat is altijd wel handig voor een hotel, om de klanten nog uniek te kunnen identificeren, en daarmee te communiceren. Dan zou je dus op de Id: regel kunnen tellen, want deze gaat er sowieso altijd in staan.

Acties:
  • 0 Henk 'm!

  • DonChaot
  • Registratie: April 2012
  • Laatst online: 17-09 16:44
Klopt. Ik heb als uitgangspunt genomen dat ts de labels ook in zijn bestand opneemt. Dit nav de code in zijn opening.

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
P_Tingen schreef op dinsdag 9 januari 2018 @ 12:59:
Dit riekt een beetje naar een help-mij-met-mijn-huiswerk topic .....
Ik vraag niet om de exacte code, puur om welke methode ik moet gebruiken. ;)

Sowieso zijn er zat dingen waar ik (nog) geen les in heb gehad. Regex bijvoorbeeld. En wellicht is mijn zoekstrategie niet goed genoeg, maar ik krijg dingen soms gewoon echt niet gevonden. In zo'n geval is het fijn als ik nog terecht kan op Tweakers. :P
ThoNohT schreef op dinsdag 9 januari 2018 @ 12:59:

Wil je ze ook nog uniek maken, geef ze dan allemaal een id, dat is altijd wel handig voor een hotel, om de klanten nog uniek te kunnen identificeren, en daarmee te communiceren. Dan zou je dus op de Id: regel kunnen tellen, want deze gaat er sowieso altijd in staan.
Dank voor de suggestie! Zou ik inderdaad ook wat mee kunnen doen.

[ Voor 30% gewijzigd door DutchDeafBoy op 09-01-2018 13:03 ]

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 17-09 12:52

P_Tingen

omdat het KAN

RobIII schreef op dinsdag 9 januari 2018 @ 12:59:
[...]
Daar is helemaal niets mis mee tenzij iemand alles laat voorkauwen.
Oh nee, niet mis mee, helemaal mee eens, maar dat zorgt er wel voor dat TS gedwongen wordt een brakke implementatie te maken. Opslaan in txt is al meh, maar dan ook nog in leesbaar formaat is gewoonweg niet standaard. Als hij op zijn opleiding dan toch leert programmeren, laten ze het dan een bééééétje praktischer aanpakken.

... en gaat over tot de orde van de dag


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
P_Tingen schreef op dinsdag 9 januari 2018 @ 13:02:
[...]

Oh nee, niet mis mee, helemaal mee eens, maar dat zorgt er wel voor dat TS gedwongen wordt een brakke implementatie te maken. Opslaan in txt is al meh, maar dan ook nog in leesbaar formaat is gewoonweg niet standaard. Als hij op zijn opleiding dan toch leert programmeren, laten ze het dan een bééééétje praktischer aanpakken.
Helemaal mee eens hoor, maar als dit de (letterlijke) opdracht is, wat @DutchTech beweert, dan is TS dus geholpen met wat er hierboven allemaal al getipt / gehint is. Dat we nog wel 10.000 dingen kunnen verzinnen om 't beter / mooier te maken (en dat dat waarschijnlijk ook wel heel handig is als je aan 't werk wil...) is fantastisch maar nu niet aan de orde. Ja, gebruik een database of gestructureerd bestand (json, xml, whatever) en ja op vele andere offtopic tips hier, maar TS' vraag is uiteindelijk: hoe tel ik hoe vaak een string voorkomt in een txt file. Boeie wat er in die file zit, dat er hotelreseveringen in staan, dat 't anders had gemoeten etc. Had TS die (voor de eigenlijke vraag irrelevante(!)) informatie weggelaten had hij/zij die tips ook niet gehad.

M.a.w. wat TS misschien nog wel vooral moet leren is zich beperken tot een klein (deel)probleem. Iets dat je als je wil gaan programmeren zult moeten leren. Het grote(re) plaatje boeit op een bepaald moment niet. TS had eigenlijk gewoon moeten vragen: hoe tel ik hoe vaak een specifieke string voorkomt in een tekstbestand. Heel dat hotelgebeuren, velden, waardes etc. zijn totaal irrelevant voor de vraag. En TS moet dus ook leren anderen niet te vermoeien met 't grotere plaatje (tenzij relevant). Datzelfde geldt voor 't aanleveren van een testcase; daarin wil je niet 200 regels code moeten doorspitten voordat er tot de essentie overgegaan wordt. Een testcase is een handvol regels code in 't beste geval en demonstreert meteen 't pijnpunt. Granted, soms zul je er niet onderuit komen een grote(re) testcase te maken maar doorgaans is een paar regels code meer dan genoeg.

TS had als voorbeeld dus ook kunnen geven:
"Ik heb een file met:"
code:
1
2
3
4
foo
bar
---------
...

"Hoe tel ik 't aantal --------- regels?"

[ Voor 30% gewijzigd door RobIII op 09-01-2018 13:13 ]

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


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
RobIII schreef op dinsdag 9 januari 2018 @ 13:06:
[...]

Helemaal mee eens hoor, maar als dit de (letterlijke) opdracht is, wat @DutchTech beweert, dan is TS dus geholpen met wat er hierboven allemaal al getipt / gehint is. Dat we nog wel 10.000 dingen kunnen verzinnen om 't beter / mooier te maken (en dat dat waarschijnlijk ook wel heel handig is als je aan 't werk wil...) is fantastisch maar nu niet aan de orde. Ja, gebruik een database of gestructureerd bestand (json, xml, whatever) en ja op vele andere offtopic tips hier, maar TS' vraag is uiteindelijk: hoe tel ik hoe vaak een string voorkomt in een txt file. Boeie wat er in die file zit, dat er hotelreseveringen in staan, dat 't anders had gemoeten etc. Had TS die (voor de eigenlijke vraag irrelevante(!)) informatie weggelaten had hij/zij die tips ook niet gehad.

M.a.w. wat TS misschien nog wel vooral moet leren is zich beperken tot een klein (deel)probleem. Iets dat je als je wil gaan programmeren zult moeten leren. Het grote(re) plaatje boeit op een bepaald moment niet. TS had eigenlijk gewoon moeten vragen: hoe tel ik hoe vaak een specifieke string voorkomt in een tekstbestand. Heel dat hotelgebeuren, velden, waardes etc. zijn totaal irrelevant voor de vraag. En TS moet dus ook leren anderen niet te vermoeien met 't grotere plaatje (tenzij relevant). Datzelfde geldt voor 't aanleveren van een testcase; daarin wil je niet 200 regels code moeten doorspitten voordat er tot de essentie overgegaan wordt. Een testcase is een handvol regels code in 't beste geval en demonstreert meteen 't pijnpunt. Granted, soms zul je er niet onderuit komen een grote(re) testcase te maken maar doorgaans is een paar regels code meer dan genoeg.

TS had als voorbeeld dus ook kunnen geven:
"Ik heb een file met:"
code:
1
2
3
4
foo
bar
---------
...

"Hoe tel ik 't aantal --------- regels?"
Ik moet inderdaad toegeven dat ik vaak teveel overbodige tekst schrijf, dat heb ik met vrijwel alles zo. Mijn bedrijfskundige analyse voor de proftaak is bijvoorbeeld ook inmiddels een document van +5000 woorden geworden, terwijl het ongetwijfeld ook voldoende was geweest met de helft daarvan. :+

En nu doe ik het weer. O-)

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat ik zou doen (maar ik wantrouw per definitie user input) is gewoon keihard de input parsen op wat je er zelf ingezet hebt en de rest negeren. Dus na een regel beginnend met "Naam: " moet er een regel volgen beginnend met "Geboortedatum: " etc en zo alles afgaan totdat echt alles klopt met 1 compleet record en daarna pas de dingen erachter gaan parsen.

Het nadeel van regexen etc is dat iemand er onzin in kan zetten zoals bij woonplaats "Geboortedatum: " invullen en daarmee je simpele regexen overstuur kan maken (dan kan je je regexen wel weer complexer maken, maar of je daar vrolijk van wordt?).

Oftewel ik zou gewoon string parsen omdat je zelf het bestand wegschrijft en dus exact weet wat er waar in hoort te staan.

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
DutchTech schreef op dinsdag 9 januari 2018 @ 12:36:
Maar in de opdracht die ik heb gekregen is één van de vereisten dat je een txt-bestand gebruikt. :'(
Oh gelukkig is het een school opdracht. Ik schrok me te pletter van je eerste post (omdat ik een echt PMS ontwikkel).

Misschien INI bestanden gebruiken?
Dat zijn namelijk ook text bestanden en een stuk makkelijker.
code:
1
2
3
4
5
6
7
8
9
10
[reservering-1]
Naam=Naam Persoon
Geboortedatum=2000-01-30
Geslacht=Man
Kamer=1
Personen=2
Aankomst=2018-02-20
Vertrek=2018-20-21
Ontbijt=0
Diner=1

[ Voor 20% gewijzigd door DJMaze op 09-01-2018 14:22 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@DutchTech nogmaals; leer alsjeblieft gewoon om je zooi netjes in te lezen uit de bron en dit netjes weg te schrijven of weer te geven in de output die je nodig hebt in de opdracht. Ga je alsjeblieft niet aanleren ranzige manieren te gebruiken (zoals domweg komma's voor newlines te vervangen) of tools te gebruiken die je niet nodig hebt (regular expressions). Hou je gewoon aan de schoolopdracht. En als je nu gewoon duidelijk weergeeft wat de invoer en verwachte uitvoer is, dan krijg je ook zinnigere reacties.

[ Voor 12% gewijzigd door Hydra op 09-01-2018 14:53 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 21:27

pistole

Frutter

Hydra schreef op dinsdag 9 januari 2018 @ 12:42:
[...]
Hint: Hij doet een simpele sub-string search. Regexes zijn geen gouden hamer. En ze tellen ook geen voorkomens.
offtopic:
Regex.Matches(parameters).Count

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
"regex tellen niet" is een vaak herhaalde kreet, maar wat er mee bedoeld wordt is dat je niet kunt valideren of twee delen evenvaak voorkomen. Het klassieke voorbeeld zijn haakjes tellen; "((( ))" heeft 3 haakjes openen en 2 sluiten. Een regex kan niet tellen of er evenveel haakjes openen als sluiten zijn.

"a{5,7}" is een ander voorbeeld waar de regex engine wel degelijk a-tjes moet tellen, maar dat kan dus omdat het een eindig aantal is. Om diezelfde reden kun je ook "()|(())||((()))" gebruiken om haakjes te tellen, tot maximaal 3.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • Rule
  • Registratie: November 2009
  • Laatst online: 14-08 11:24
DutchTech schreef op dinsdag 9 januari 2018 @ 13:23:
[...]

Ik moet inderdaad toegeven dat ik vaak teveel overbodige tekst schrijf, dat heb ik met vrijwel alles zo. Mijn bedrijfskundige analyse voor de proftaak is bijvoorbeeld ook inmiddels een document van +5000 woorden geworden, terwijl het ongetwijfeld ook voldoende was geweest met de helft daarvan. :+

En nu doe ik het weer. O-)
Kun je niet het aantal regels tellen gedeeld door het aantal regels per reservering? Als je iedere reservering 10 regels wegschrijft heb je iedere 10 regels 1 reservering. Weet niet of dit al is genoemd.. Makkelijk en dan hoef je niet veel aan te passen aan je methode.

Ben het er wel mee eens dat je veel beter CSV kunt gebruiken of databases.. maar dat achterwege gelaten.

Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23:40
MSalters schreef op woensdag 10 januari 2018 @ 14:57:
"regex tellen niet" is een vaak herhaalde kreet, maar wat er mee bedoeld wordt is dat je niet kunt valideren of twee delen evenvaak voorkomen. Het klassieke voorbeeld zijn haakjes tellen; "((( ))" heeft 3 haakjes openen en 2 sluiten. Een regex kan niet tellen of er evenveel haakjes openen als sluiten zijn.

[...]
Dat kan wel, met recursive regular expressions (en wat extra code). Maar inderdaad, er zijn (veel) betere manieren om dat de doen dan regular expressions.

Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Als je recursie toevoegt kom je er inderdaad, maar dat is nu net het punt: recursie is essentieel voor Turing-completeness, en een reguliere expressie heeft geen recursie.

(Een regular expression bepaalt of een string uit een regular language komt, en dat kan per definitie in een eindige hoeveelheid geheugen. Met recursie heb je hooguit een eindige hoeveelheid geheugen per iteratie)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Je kan ook gewoon een class aanmaken voor het houden van de info, deze met JSON.net wegschrijven en deze weer lezen vanaf disk.

Paar duizend files is niks voor een beetje een machine vandaag de dag.

Of met JObject een JSON document in elkaar flansen en deze wegschrijven.

Less alienation, more cooperation.

Pagina: 1