2009-08-14 12 views
0

Wir haben viele Strings in unserer Ressource-Dateien zu validieren, die .eg enthält FormatWie Formatstring

„{0} wurde verschoben auf {1}“

Diese Strings werden übergeben String.Format() von den Anwendungen manchmal die Übersetzer die "Formatierungsmarkierungen" durcheinander bringen Deshalb möchte ich ein Werkzeug finden/schreiben, das überprüft, dass alle Zeichenfolgen in der Ressourcendatei ein gültiges Format haben.

Ich weiß für jeden Schlüssel die Anzahl der Argumente, die an String.Format übergeben werden, so dass auch in die Validierungen fließen kann.

Also abgesehen von der Überprüfung, dass die "{" mit der "}" übereinstimmen, gibt es eine einfache Möglichkeit, die meisten Fehler in den Formatzeichenfolgen zu finden?

(I .NET verwenden, diese Überprüfung natürlich als Teil des Build-Prozesses durchgeführt werden)

+0

Achten Sie darauf, nicht geschweifte geschweifte Klammern zu verpassen, wie '" dies ist ein Format: {0}, das ist nicht: {{text}} "' –

Antwort

1

verwenden sollte ich mit einer einfachen Lösung einfallen lassen, die ein vernünftiges Ergebnis gibt, weiß ich die Anzahl der Argumentation auf die format-Anweisung, aber nicht auf den Typ der Argumente. Die meisten Argumente sind jedoch Strings.

if (numberOfArguments == 3) 
{ 
    try 
    { 
    String.Format(theTranslatorString, "", "", "") 
    } 
    catch 
    { 
    // tell the translator there is a problem with the string format 
    } 
} 

Natürlich So würde dies ohne ein „if“ für jede Anzahl von Argumenten im wirklichen Leben geschrieben werden.

1

Das klingt wie ein klassisches Unit-Test-Szenario. Können Sie einen automatisierten Build-/Unit-Test für diese Quellen deaktivieren? Der Komponententest würde einfach prüfen, ob jede Formatzeichenkette noch analysierbar ist.

+0

Nur was ich denke, aber wie ich "überprüfe" dass jede Formatzeichenfolge noch analysierbar ist. " –

+0

Wird es keine Ausnahme auslösen, wenn es nicht analysiert werden kann? Oder Sie können nach der Formatierung überprüfen, ob die Zeichenfolge die erwarteten Elemente enthält. z.B. versuche, -TEST1-, -TEST2- oder ähnliches einzufügen ... –

+0

Ich möchte einen Komponententest haben, der das Foramet aller übersetzten Strings prüft. Wir haben keine Unit-Tests für die meisten unserer UI und die meisten der übersetzbaren Strings werden in der Benutzeroberfläche verwendet. –

1

Es sieht aus wie Sie eine Zeichenfolge in Ausdruck zu validieren, so dass Sie Reguläre Ausdrücke Blick auf link text

Verwandte Themen