Comment valider la chaîne de format
-
16-09-2019 - |
Question
Nous avons beaucoup de chaînes dans nos fichiers de ressources qui contient le format .e.g
« {0} a déplacé {1} »
Ces chaînes sont transmises à String.Format () par les applications, parfois le mess des traducteurs les « formatage des marqueurs » Je souhaite donc trouver / écrire un outil qui vérifie que toutes les chaînes dans la fichier de ressources a un format valide.
Je sais que pour chaque touche le nombre de args qui sont passés à String.Format pour que puisse alimenter les validations ainsi.
Donc, en dehors de vérifier que le « { » correspond au « } » est-il un moyen facile de trouver la plupart des erreurs dans les chaînes de format?
(j'utilise .NET, cette vérification sera évidemment fait dans le cadre du processus de construction)
La solution 3
Je suis venu avec une solution simple qui donne un résultat raisonnable, je sais que le nombre d'argument à l'instruction de format, mais pas le type des arguments. Cependant, la plupart des arguments sont des chaînes.
if (numberOfArguments == 3)
{
try
{
String.Format(theTranslatorString, "", "", "")
}
catch
{
// tell the translator there is a problem with the string format
}
}
Bien sûr, ce serait écrit sans « si » pour chaque nombre d'arguments dans la vie réelle.
Autres conseils
Cela ressemble à un scénario de test d'unité classique. Pouvez-vous chasser le code source d'une construction automatique / unité test déclencheur pour engager ceux-ci? Le test unitaire serait tout simplement vérifier que chaque chaîne de format est parse-mesure encore.
On dirait que vous validez une chaîne dans l'expression, vous devez donc utiliser Expressions rationnelles Regardez texte du lien