Door
S B
op 15-04-2018 16:32
gewijzigd op 15-04-2018 16:33
4.186 views
Ik ben bezig met een script dat een woord vergelijkt met letters die één voor één uit een array worden uitgelezen.
Nu wil ik echter een "_" (underscore) krijgen op de plaats van de letter van het woord als deze niet in het array voorkomt. Met onderstaande krijg ik "ppl", terwijl ik graag _pp_l zou willen genereren. Iemand een idee hiervoor?
Wel leuk dat je in zo'n geval als dit dezelfde functionaliteit op meerdere manieren kunt bereiken. Zo schrijf je waarschijnlijk heel vaak code waarvan je achteraf denkt 'kan dat niet korter of sneller'?
Toen ik begon met programmeren dacht ik dat je een bepaalde functionaliteit maar op 1 manier kon programmeren. Inmiddels besef ik dat dat op tig manieren kan.
Ik ben nog niet zo behendig om het kortste (of snelste) script te schrijven. Gelukkig zijn er mensen zoals jullie die dat sneller kunnen dan ik ;). Grappig dat mijn voorbeeld ook opgelost kan worden zonder for-lus(sen).
Als je vreemde tekens verwacht, kun je gewoon de multi-byte variant gebruiken.
Dat is ook niet per se nodig, dit hangt van de character encoding af, en de te verwachten exotische tekens.
Maar de veronderstelling dat strlen() karakters telt, en niet bytes is een misconceptie. Natuurlijk heeft dit een geschiedenis (gebaseerd op traditionele codepages die vrijwel geen exotische karakters hebben, en waar nagenoeg alles in een byte past), en de naam is niet echt optimaal gekozen / toepasselijk meer. En in veel gevallen zal dit werken, maar lang niet alle. Dit is dus een redelijk standaard instinker, en dit omschrijven als gotcha is vaktaal, geen turbotaal.