The best thing about UDP jokes is that I don't care if you get them or not.

Ah, je wil méér dan ToUpper
[ Voor 15% gewijzigd door RobIII op 10-12-2008 17:12 ]
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
¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸
1
2
3
4
| Console.WriteLine(Regex.Replace("1234ab", @"(\d{4})\s{0,1}([A-z]{2})", new MatchEvaluator(delegate(Match m){ return string.Format("{0} {1}", m.Groups[1].Value, m.Groups[2].Value.ToUpper()); }))); Console.ReadLine(); |
1
2
3
| //Formaat postcode sinds 2005 Console.WriteLine(Regex.Replace("1234ab", @"([1-9]\d{3})\s*([A-Z]{2}(?<!S[ADS]))", m => m.Groups[1] + " " + m.Groups[2].Value.ToUpper(), RegexOptions.IgnoreCase)); |
Hoewel je misschien beter een iets ruimere definitie kan nemen (incl SS/SA/SD).
Maar als het er maar om 1 gaat, die je ook wil valideren, dan kom je al snel bij Match uit.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
[ Voor 96% gewijzigd door ik222 op 10-12-2008 18:22 . Reden: niet goed gelezen ]
En dan is nog de vraag of je wel wil valideren of enkel formatteren; daarbij (maar da's persoonlijk) zou ik dan voor een generieke [A-Z]{2} gaan en die gekke uitzonderingen lekker laten boeien. Dan hoef ik mijn app niet aan te passen als 1 of andere instantie 't in z'n kop haalt doch die uitzonderingen maar weer te gaan gebruikenpedorus schreef op woensdag 10 december 2008 @ 18:15:
Stel je wil in een text alle mogelijk valide postcodes opmaken, dan zou ik die code iets aanpassen:
C#:
1 2 3 //Formaat postcode sinds 2005 Console.WriteLine(Regex.Replace("1234ab", @"([1-9]\d{3})\s*([A-Z]{2}(?<!S[ADS]))", m => m.Groups[1] + " " + m.Groups[2].Value.ToUpper(), RegexOptions.IgnoreCase));
Hoewel je misschien beter een iets ruimere definitie kan nemen (incl SS/SA/SD).
Maar als het er maar om 1 gaat, die je ook wil valideren, dan kom je al snel bij Match uit.
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
Gelukkig heb ik geen postcode met F, I, O, Q, U of Y erin, die zijn er pas sinds 2005RobIII schreef op woensdag 10 december 2008 @ 18:20:
[...]
En dan is nog de vraag of je wel wil valideren of enkel formatteren; daarbij (maar da's persoonlijk) zou ik dan voor een generieke [A-Z]{2} gaan en die gekke uitzonderingen lekker laten boeien. Dan hoef ik mijn app niet aan te passen als 1 of andere instantie 't in z'n kop haalt doch die uitzonderingen maar weer te gaan gebruiken
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
Dat kan wat betreft de postcode. De postcode is maar een voorbeeld.TheCoolGamer schreef op woensdag 10 december 2008 @ 17:20:
Waarom haal je niet met behulp van regular expressions het cijfer deel en het letter deel apart en voeg je het weer samen zodat het er uit ziet als jij wilt?
Ongeacht wat of wie, ik wil gewoon een string naar uppercase.
Waarom niet zoiets ? Nou, ik wil het met reg. exp. doen, en niet met .Net code.Daspeed schreef op woensdag 10 december 2008 @ 18:01:
Waarom niet zoiets? (ff snel geklopt, waarschijnlijk niet precies wat je wilt)
C#:
1 2 3 4 Console.WriteLine(Regex.Replace("1234ab", @"(\d{4})\s{0,1}([A-z]{2})", new MatchEvaluator(delegate(Match m){ return string.Format("{0} {1}", m.Groups[1].Value, m.Groups[2].Value.ToUpper()); }))); Console.ReadLine();
In bovenstaande code is de replace een .Net functie namelijk .ToUpper
Uiteindelijk gaat het om een maatwerk applicatie die we niet zelf hebben geschreven of kunnen beheren.RobIII schreef op woensdag 10 december 2008 @ 17:09:
Ik ben érg benieuwd waarom .ToUpper niet voldoet en waarom je in hemelsnaam via een regexp wil werken eigenlijk
edit:
Ah, je wil méér dan ToUpper![]()
Wat we wel kunnen doen zijn 2 dingen (nog wel meer, maar dat is niet van belang):
- 1. Wij kunnen een check doen op een invoerveld op basis van RegEx.match
- 2. Wij kunnen een invoerveld vervangen door een andere waarde op basis van RegEx.replace
Dit invoer kan zijn 1234ab, maar dit moet door RegEx.replace omgezet worden naar 1234 AB.
Nu lukt mij alles wel redelijk, maar een string naar .ToUpper brengen krijg ik niet voor elkaar.
Dus als iemand dat weet
The best thing about UDP jokes is that I don't care if you get them or not.
[ Voor 10% gewijzigd door Ruudjah op 10-12-2008 20:15 ]
Regex heeft meerdere dialectenRuudjah schreef op woensdag 10 december 2008 @ 20:14:
Zo niet, wat heeft .NET verder met dit topic te maken?
Welke oplossing? Voor het probleem van TS bestaat er niet echt een oplossing volgens mij, behalve 26x een replace doenOverigens leerde me minder dan 120 seconden Visual studio & google me jouw oplossing.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
Zoals ik al aangaf zal de Regex door een C# applicatie middels een regex.replace en regex.match verder verwerkt worden. Ik moet dus wel het juiste "dialect" aangeven.Ruudjah schreef op woensdag 10 december 2008 @ 20:14:
RegexBuddy to the rescue! Regex is de draak, RegexBuddy temt het. Ik begrijp verder uit je verhaal dat je dus geen .NET code kan schrijven? Zo niet, wat heeft .NET verder met dit topic te maken? Overigens leerde me minder dan 120 seconden Visual studio & google me jouw oplossing.
Als het je binnen 120 seconden lukt, kan je me dan in 3 seconden de goede richting op duwen ?
[ Voor 0% gewijzigd door Remco op 11-12-2008 20:46 . Reden: typo ]
The best thing about UDP jokes is that I don't care if you get them or not.
De oplossing met een MatchEvaluator lijkt me toch goed bruikbaar? Zo niet, geef dan eens aan waarom niet?
[ Voor 6% gewijzigd door Herko_ter_Horst op 11-12-2008 20:56 ]
"Any sufficiently advanced technology is indistinguishable from magic."
http://www.google.nl/sear...official&client=firefox-aHerko_ter_Horst schreef op donderdag 11 december 2008 @ 20:53:
Wacht ff, wil je nou dat een regular expression een toUpper-achtige operatie op je input gaat toepassen? Ik heb geen verstand van .Net, maar het lijkt me onwaarschijnlijk dat de regexp implementatie daar zelf functionaliteit voor heeft, die matcht alleen maar zaken. Vervolgens bepaal jij hoe je de matches processed, waarbij de regexp je handles geeft naar de orginele input en de matches zelf.
The best thing about UDP jokes is that I don't care if you get them or not.
Ok, er zijn dus blijkbaar regexp implementaties die wel een uppercase of lowercase operator hebben voor de replacement expressie. (Als dat de bedoeling was van die Google link, zeg dat dan op een normale manier...)
In C# is die mogelijkheid er bijkbaar niet (ik neem aan dat je dat geprobeerd hebt?). C# heeft in elk geval die generiekere oplossing waarbij je via de MatchEvaluator elke willekeurige transformatie op een match los kunt laten. Waarom voldoet die niet?
[ Voor 17% gewijzigd door Herko_ter_Horst op 11-12-2008 22:10 ]
"Any sufficiently advanced technology is indistinguishable from magic."
Ik snap wat je bedoelt, maar bijna alle reacties zijn gebaseerd op het verkeerd/niet goed lezen van de ts. Als ik dan een juiste reactie zou geven, zou dit een copy zijn van mijn ts.Herko_ter_Horst schreef op donderdag 11 december 2008 @ 22:06:
Leuk zo'n lijst links. En dan?
Ok, er zijn dus blijkbaar regexp implementaties die wel een uppercase of lowercase operator hebben voor de replacement expressie. (Als dat de bedoeling was van die Google link, zeg dat dan op een normale manier...)
En zoals je ziet in google kan je zelf uitzoeken welke site je wilt gebruiken om de replace functie te bestuderen.....
[ Voor 9% gewijzigd door Remco op 12-12-2008 09:30 ]
The best thing about UDP jokes is that I don't care if you get them or not.