2010-07-09 10 views
1

Nous convertissons actuellement notre ancienne base VB.Net en C#. Convertir la majeure partie du code n'est pas un problème .. il y a de bons convertisseurs. Le problème auquel nous sommes confrontés est qu'aucun des convertisseurs testés ne peut convertir() dans [] dans les tableaux et les collections.Conversion VB -> C#. Expression régulière à modifier ("abc") dans ["abc"]

Exemple: Session ("abcd") à Session ["abcd"] ;. Les convertisseurs pensent que Session est une méthode/fonction et part avec la parenthèse.

Ma question est: existe-t-il une expression régulière qui peut être utilisée dans find/replace dans Visual Studio 2008 qui peut effectuer cette substitution? Pourquoi le faire manuellement pour se fatiguer quand vous devez le faire plus de 200 fois par cours.

Nous vous remercions de l'attention

+1

Je ne peux pas penser à une expression régulière pour vous aider (puisque la syntaxe pour un appel de méthode est identique à votre utilisation pour indexer dans des collections) cependant, hypothétiquement, vous pourriez écrire un programme pour analyser les messages d'erreur du compilateur cette information pour corriger la syntaxe de manière automatisée. – Douglas

Répondre

1

Si vous voulez automatiser cela, vous avez besoin d'un convertisseur qui peut analyser le code VB.NET comme un compilateur.

Si vous voulez juste remplacer Session (whatever) avec Session [whatever], vous pouvez rechercher le expession régulier (Session *)\((.*?)\) et le remplacer par $1[$2]. Ou recherchez ((?:Session|otherkeyword|thirdkeyword) *)\((.*?)\) et remplacez par le même s'il y a plusieurs mots-clés qui peuvent précéder vos tableaux.

Mes regex sont de style Perl. Ils fonctionneront dans de nombreux éditeurs de texte modernes ainsi qu'avec la classe Regex de .NET. L'IDE VS a sa propre saveur regex qui n'est vraiment compatible avec rien d'autre.

+0

Jan, ton conseil m'a été très utile pour trouver une solution. Ce que j'ai fait était: champ "trouver quoi": (Session \() {. *} (\)) champ "remplacer whit": Session \ [\ 1 \] Et cela a fonctionné exactement comme je le voulais. Merci –