windows - Visual Studio 2010: mønsterbaseret søgning erstatte andet end regex?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har overtaget et projekt, der er fyldt med kode som dette:


if (aTraceUserids[t].Trim().ToUpper() == Userid().Trim().ToUpper())
{
    // ...
}


Hvad er - ved hjælp af værktøjsassisteret ekspressionsformulering - erstattes en god måde at foretage en søgning på i en sag til sag:


if (aTraceUserids[t].Equals(Userid(), StringComparison.InvariantCultureIgnoreCase))
{
    // ...
}


Rediger (tak Dave for at få mig til at tænke på dette yderligere):


Jeg ved, at dette burde være muligt med regelmæssige udtryk, men det er svært at få ret og dokumentere, så jeg undrer mig over værktøjsassisterede måder, der hjælper mig med at udtrykke udtrykkene og udføre dem. [6]


Ideelt set søger jeg efter et mønsterbaseret søg/erstat værktøj, der giver mig mulighed for



  • Indtast søge-/erstatningsmønstre

  • Indtast mønstrene for filerne og katalognavne, der skal matches

  • hjælper mig visuelt med søge-/erstatningskampene og giver mig mulighed for at redigere hver forekomst



Jeg bryder mig ikke meget om hvilken platform som denne slags søg/erstatningshandlinger sandsynligvis vil gælde for andre store kodebaser også.


Så: enhver løsning baseret på * nix, Windows eller web er fint. CygWin og/eller WINE-baserede løsninger er også fine. (Det er derfor jeg fjernede VS2010 tag og tilføjet nogle platform tags).

Bedste reference


Da dette oprindeligt var mærket med 'Visual Studio', kan Visual Studio selv gøre regulære udtryk baseret find/erstat, og standard 'Find and Replace' dialogen giver dig mulighed for at vælge og vælge ved at trykke på 'Find Next', 'Replace' eller 'Udskift alle', som du vælger.


For eksempel har jeg for nylig ændret et API fra;


Log.Error(string message, bool someotherArg);


til


Log.Error (strengmeddelelse);


Og let anvendte Visual Studio til at erstatte al brug i hele min kodebase af denne ændrede API som sådan;


Find hvad;
    Log.Error ({. *}, True);


Erstat med:
    Log.Error (\ 1);


Backquote i erstatningslinjen 1 sætter den grupperede regex indeholdt af {...} i stedet i udskiftningen.


Praktisk og indbygget. Arbejder for mig.