Toon posts:

[VB.NET] Regex en de Duitse taal

Pagina: 1
Acties:
  • 128 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ergens in een eBay factuur -> csv tooltje dat ik geschreven staat de volgende code:

Visual Basic .NET:
1
2
Dim rgxAdresregel As Regex = New Regex(My.Settings.strRegexpatroonAdres, RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant Or RegexOptions.IgnorePatternWhitespace Or RegexOptions.Compiled)
Dim rgxmatchAdresregel As Match


Vervolgens ga ik die regex hier gebruiken:

Visual Basic .NET:
1
strResultaat = rgxmatchAdresregel.Value


Waar strResultaat een normale string is.

Werkt allemaal prima, maar als er facturen voor Duitse klanten met hun ß, ä, ö, ü letters in de factuur map zitten dan worden die tekens gewoon compleet genegeerd. Als ik er een breakpoint op zet dan zie ik dat de tekens al weg zijn bij "strResultaat = rgxmatchAdresregel.Value". Hij geeft dus het hele resultaat terug, maar zonder de hiervoor genoemde tekens.

Als ik de regex regel test in Expresso dan geeft hij het resultaat terug MET die "Duitse tekens" dus het ligt niet aan mijn regex regel?

Waar ligt het wel aan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Gokje: Kan je ergens je encoding instellen, al dan niet in een van de overloaded methods / constructors? :)

[ Voor 39% gewijzigd door gorgi_19 op 17-02-2007 13:37 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Al geprobeerd de culture op duits te zetten ipv Invariant?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Ik zie geen enkele regex expressie?

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


Verwijderd

Topicstarter
MSalters schreef op zaterdag 17 februari 2007 @ 16:13:
Ik zie geen enkele regex expressie?
Daar ligt het niet aan omdat expresso het resultaat terug geeft met ringel S bijvoorbeeld. Daar stond ook dat culture irrelevant was... Dus dat zal het probleem niet zijn helaas.... Mischien de localisatie van het .NET framework op de computers? Expressie voor het stukje met ringel S'en etc. is .*?

Verwijderd

Topicstarter
Zit nog steeds met het probleem! De expressie dan toch voor de duidelijkheid (hoewel de expressie in expresso wel het juiste resultaat terug geeft).

code:
1
<td\snowrap="true"><b>.*</b><br>.*<br>.*</td>


Ben ten einde raad!

[ Voor 4% gewijzigd door Verwijderd op 24-03-2007 13:52 ]


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ik zou eerst je string pre-processen. Zorg dat het van tevoren Unicode is, en ga het dan decomposen. Dit betekent: karakters als é worden dan opgesplitst in een "´" en een "e". Misschien dat VB.NET met een of andere optie dat wel automatisch voor je doet, maar zo niet, dan zou dit wel kunnen helpen. Voer je regex uit op de gedecomposede string.

Hoe bruikbaar dit is, ligt ook een beetje aan wat je met het resultaat wilt doen. Als je alleen wil kijken of het match, dan moet dit prima werken. Als je ook nog wat met het resultaat wil doen, dan moet je zorgen dat je de originele string weer hebt... Niet triviaal.

Verwijderd

Topicstarter
Haha het probleem zat hem dus in het inlezen van de file en dan specifiek met StreamReader en niet in regex, my bad. StreamReader gaat standaard de mist in met encoding kennelijk tenzij je aangeeft dat hij System.Text.Encoding.Default moet gebruiken....
Pagina: 1