2013-10-09 7 views
1

Dans Visual Basic .NET (2010), j'ai ce type de chaîne qui contient également un code Visual Basic. Et je suis en train de remplacer tous les entiers avec CInt (entier) en utilisant "expression régulière"Comment appliquer cette règle regex

donc de:

Dim I As Integer = 0 

Pour:

Dim I As Integer = CInt(0) 

Et c'est le regex je compte à utiliser: http://regex101.com/r/rZ4sJ8

/\b(\d+)\b/CInt(\1) 

Je ne sais pas comment l'appliquer. J'ai essayé Regex.Replace() et Regex.Matches etc et rien ne semble faire l'affaire. Je reçois soit un résultat en blanc ou avec rien même similaire à l'entrée

Répondre

2

Dans .NET, vous devez séparer le motif de recherche à partir du modèle de remplacement, comme ceci:

Dim input As String = "Dim I As Integer = 0" 
Dim pattern As String = "\b(\d+)\b" 
Dim replacement As String = "CInt($1)" 
Dim output As String = Regex.Replace(input, pattern, replacement) 
+1

Cela a fonctionné parfaitement, vous avez vraiment compris ce que je voulais accomplir! –

0

Quelque chose comme ceci est ce que vous avez besoin:

Dim value As String = "Dim I As Integer = 13" 
    Dim pattern As String = "\b(\d+)\b" 
    Dim matches As MatchCollection = Regex.Matches(value, pattern) 

    ' Loop over matches. 
    For Each m As Match In matches 
     ' Loop over captures. 
     For Each c As Capture In m.Captures 
      ' Replace original string 
      value = value.Substring(0, c.Index) + "CInt(" + c.Value.ToString + ")" 
     Next 
    Next 

Bien que je me demande pourquoi vous avez besoin de le faire remplacer en premier lieu!

+0

Dans ce cas, je dois les remplacer dans la chaîne d'origine qui est un peu difficile à faire cas, il existe des classes ou des sous-entiers avec des entiers dans leurs noms. D'où le regex. –

+0

J'apprécie l'aide mais honnêtement, ce n'est pas votre affaire indépendamment. C'est très peu professionnel de demander cela à mon avis. Bien que le code que vous avez fourni m'a donné des erreurs et la regex que vous avez édité l'a ruiné. –

+0

Je pense que vous pourriez être en mesure de résoudre votre «problème» d'une autre manière. Si vous expliquez pourquoi vous devez faire cela; Quelqu'un pourrait avoir une meilleure suggestion sur la façon de s'y prendre (Il n'y a pas de différence fonctionnelle entre ce que vous trouvez et ce que vous le remplacez) –

Questions connexes