J'ai une chaîne délimitée par un tuyau comme ceci:Comment remplacer le nième groupe regex par une nouvelle chaîne dans .net?
blah | bla | bla | bla | bla | bla | bla | bla | bla | ancienDate | bla | bla |
Je voudrais remplacer le contenu de la 10e section par une nouvelle date. Je suis en mesure de correspondre à la l'ancienne date avec le code suivant:
'create a group with the first 9 non-pipes followed by a pipe, a group with the old date followed by a pipe, and sub-group of just the old date.
Dim pipeRegEx As New RegularExpressions.Regex("(([^\|]*\|){9})(([^\|]*)\|)")
'the sub-group is the 4th group ordinal in the match GroupCollection
Dim oldDate as String=pipeRegEx.Match(strMessage).Groups(4).Value
Cependant, je ne peux pas comprendre comment Repace ce groupe avec le nouveau texte. J'ai essayé:
pipeRegEx.Replace(strMessage, "$4", newDate) 'where newDate is a string var
Mais cela renvoie le message original comme s'il était incapable de trouver le 4ème groupe. Je ne peux pas remplacer une chaîne par la date correspondante car il y a plusieurs dates dans la chaîne (orderDate, receivedDate, etc.) et il est possible de faire correspondre une de ces chaînes par accident.
Est-ce que quelqu'un sait comment remplacer ce texte?
Merci d'avance pour toute aide.
"statique" est CSharp-parler. Comme msarchet l'a souligné, "Shared" est la version VB-speak de cela. – Brad
Static est en fait un terme VB.NET mais fait référence à une variable conservant sa valeur même après que le sous-marin ou la fonction a été éliminée. –
Essayez cette expression: (? <= ([^ \ |] + \ |) {9}) [^ \ |] + (? = (\ | [^ \ |] +) + \ | *) – Brad