2012-04-04 8 views
1

Ich versuche, ein Surround-mit-Vorlage mit ReSharper zu erstellen, die eine Auswahl Formate wie diesesSurround-mit-Vorlage mit ReSharper, die die Auswahl formatiert

string foo = "A text with spaces"; 

in diese:

string foo = Translate("ATextWithSpaces"); 

Ich möchte Um den "A text with spaces" selbst auszuwählen, drücken Sie die Surround-Taste und beobachten Sie, wie es passiert!

Ich habe eine Vorlage, die

string foo = Translate("A text with spaces") 

produziert ... aber das ist nicht gut genug für mich. Irgendwelche Vorschläge?

+1

könnten Sie eine Methode erstellen, die Ihre Zeichenfolge formatiert, wie Sie es wollen (ohne Leerzeichen und Camal-Fall), so würde Ihr Aufruf sein "string foo = Übersetzen (RemoveSpaces (" Ein Text mit Leerzeichen ")) oder enthalten in deiner 'Translate' Methode? –

+0

Es in meine translate-Methode zu integrieren würde tatsächlich funktionieren. Eine solche Methode im Code zu erstellen wäre gar nicht so schwer. Guter Gedanke! Allerdings analysiere ich die .cs-Dateien für Verwendungen von Translate() aus anderen Gründen, und dort wäre es am besten, den richtigen Wert direkt zu haben. Ich schätze, ich könnte die gleiche Funktionalität auch dort verwenden ... –

+0

Wenn Sie noch ein paar Sekunden darüber nachdenken, hat Ihr Ansatz einige andere Vorteile. Den Wert im Code zu sehen, wie er ursprünglich geschrieben wurde, ist vorteilhaft! Was für ein Unterschied ein Paar neue Augen haben! –

Antwort

1

Aufbauend auf meinen Kommentar:

Sie könnten eine neue Methode erstellen, die Ihre Zeichenfolge formatiert, wie Sie es wünschen, so etwas wie:

public string RemoveSpaces(string input) 
{ 
    return new System.Globalization.CultureInfo("en-GB", false).TextInfo.ToTitleCase(input).Replace(" ", ""); 
} 
2

Wenn Sie bereit sind, in ReSharper-Plug-in wagen Dev Territory, dies ergibt ein sehr, sehr einfaches Plug-in, das Minuten zur Implementierung benötigt. Grundsätzlich können Sie eine Kontextaktion ausführen, die, wenn die Einfügemarke in einem Zeichenfolgenliteral ist, das Literal verwendet, Leerzeichen entfernt (mit string.Replace) und dann einen neuen Ausdruck erstellt, z. B. CSharpElementFactory.CreateExpressionAsIs("Translate($1)", x), wobei x das geänderte Literal ist.

Wenn Sie daran interessiert sind und weitere Informationen benötigen, kontaktieren Sie mich bitte (skype: dmitri.nesteruk, E-Mail: dn at jetbrains dot com) mit Fragen, die Sie haben können.

+0

Danke! Ich denke, ich werde es versuchen! –