Toon posts:

Omzetten naar hoofdletters met Regex

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zoek naar een regex waarmee ik een string kan omzetten naar diezelfde string maar dat beginnend met een hoofdletter...

Volgens sommige tutorials moet je met regex ( regular expressions) naast pattern matching ook strings kunnen manipuleren. Simpel gezegd komt het hierop neer:

- gebruiker typt zijn naam in een inputveld
- d.m.v. een regex wordt de eerste letter altijd omgezet naar een upercase

Uiteraard weet ik dat er in de meeste prog. talen simpele functies voor zijn maar in dit geval is er alleen een optie om dit met een regex voor elkaar te krijgen

Thanx alvast!

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

waarom? Waarom niet een strtoupper icm substr?

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:38

crisp

Devver

Pixelated

of gewoon ucfirst

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:29

Haan

dotnetter

Guillome schreef op donderdag 30 oktober 2008 @ 20:24:
waarom? Waarom niet een strtoupper icm substr?
Lijkt mij ook ja. Ik ben benieuwd wat de speciale reden is dat alleen een regex zou werken. Ik zie inputveld staan, dus het gaat of om een standalone programma, of een of andere webpagina lijkt me? Dan moeten er ook andere makkelijkere mogelijkheden zijn.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Uiteraard zijn, zoals gezegd, in een " normale" script-/programmeertaal legio mogelijkheden voor dergelijke string manipulaties. In dit geval werken we met een eform generator ( Tripleforms van Kodision) die geen scripttaal bevat. De inputvelden, die op een form geplaats worden bevatten een aantal custom validators voor standaard validaties ( datum, sofinr, postcode etc. etc.). De enige opties tot het bouwen van een eigen validatie is regex, vandaar....

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Validatie is heel wat anders dan conversie. Ik durf met een aan zekerheid grenzende waarschijnlijkheid te zeggen dat de reguliere expressies in die applicatie enkel dienen om het formaat te controleren en dat het niet mogelijk is om de inhoud van een veld aan te passen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

En als het al kan dan zal je toch echt met je neus de documentatie van Tripleforms in moeten want er is geen standaard regex manier voor. De enige standaard manipulatie die reguliere expressies kennen zijn replaces waarbij je matches vervangt door andere tekst. Je kunt daarbij wel gebruik maken van tagging om stukjes uit het origineel op een bepaalde plek in het resultaat te krijgen, maar niet om van een teken dan een hoofdletter te maken oid.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op donderdag 30 oktober 2008 @ 20:23:
Volgens sommige tutorials moet je met regex ( regular expressions) naast pattern matching ook strings kunnen manipuleren.
Regular expressions zijn alleen maar een middel om kort en bondig samen te vatten hoe een string eruit ziet. Om regular expressions te gebruiken heb je een programmeertaal nodig en die programmeertaal maakt het mogelijk om iets met de resultaten van het gebruik van regular expressions te doen. Zeggen dat je met 'regular expressions strings kunt manipuleren' is het maken van een categoriefout.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
.oisyn schreef op donderdag 30 oktober 2008 @ 21:22:
Je kunt daarbij wel gebruik maken van tagging om stukjes uit het origineel op een bepaalde plek in het resultaat te krijgen, maar niet om van een teken dan een hoofdletter te maken oid.
Theoretische manier : Formfield standaard vullen met alle 26 hoofdletters in de achtergrond ( in principe dus onzichtbaar ). Standaard validation uitbreiden dat die 26 hoofdletters erin moeten zitten en aan het einde.
Dan na elke whitespace / beginning of line het 1e karakter pakken, dit karakter opzoeken in de laatste 26 karakters van de string en hiermee replacen. Daarna alles returnen behalve de laatste 26 karakters.
Theoretisch mogelijk volgens mij, alleen heb je waarschijnlijk meer dan 1 regex nodig.

Praktisch is het veel makkelijker om dit in view-laag of de backend af te handelen... Of gewoon een regex bouwen die eist dat je begint met een hoofdletter, die theoretische regex wil je namelijk echt niet bouwen...

Acties:
  • 0 Henk 'm!

  • benoni
  • Registratie: November 2003
  • Niet online
Als je 't met één regexp wilt doen:
PHP:
1
preg_replace("/(\w)(\w+)/e", "strtoupper('\\1').'\\2'", $input)

Vergeet de /e modifier niet :)
.oisyn schreef op donderdag 30 oktober 2008 @ 21:22:
Je kunt daarbij wel gebruik maken van tagging om stukjes uit het origineel op een bepaalde plek in het resultaat te krijgen, maar niet om van een teken dan een hoofdletter te maken oid.
Ligt een beetje aan de omgeving. Bij gebruik van regular expressions in TextWrangler bijvoorbeeld kun je in de vervangtekst \L voor lowercase gebruiken, \U voor uppercase en \E om terug te gaan naar de originele casing. Ik weet niet of dat bij programmeertalen ook die codes terugkomen, maar bij PHP is er dus een andere mogelijkheid om functies tussen te voegen.

[ Voor 69% gewijzigd door benoni op 30-10-2008 22:07 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

benoni schreef op donderdag 30 oktober 2008 @ 21:43:
Als je 't met één regexp wilt doen:
PHP:
1
preg_replace("/(\w)(\w+)/e", "strtoupper('\\1').'\\2'", $input)

Vergeet de /e modifier niet :)
Vergeet de topic niet te lezen. De TS zegt nergens dat ie PHP gebruikt. Sterker nog: Verwijderd in "Omzetten naar hoofdleters met Regex"
Ligt een beetje aan de omgeving
Exact. En daarom zei ik dat ie de docs moest lezen. Ik zei dat er geen standaard oplossing voor was.

[ Voor 7% gewijzigd door .oisyn op 30-10-2008 22:13 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1