フォーマット文字列を検証する方法
-
16-09-2019 - |
質問
私たちは、
フォーマット.e.gが含まれている私たちのリソースファイル内の文字列の多くを持っています「{0}、{1}に移動しました」
これらの文字列は、そのため私は、内のすべての文字列かどうかをチェックツールを書く/見つけたい「フォーマットマーカー」時々翻訳者の混乱、アプリケーションによってのString.Formatの()のに渡されリソースファイルには、有効な形式を持っています。
私は、同様の検証に送り込むことができるようにString.Formatのに渡される引数の各キー番号を知っています。
だから、離れて「{」一致「}」ことを確認のフォーマット文字列で、ほとんどのエラーを見つけるための簡単な方法がありますか?
(私は.NETを使用しています、このチェックはもちろん、ビルドプロセスの一環として行われます)。
解決 3
私は合理的な結果を与える簡単な解決策が出ている、私はFORMAT文ではなく、引数の型に引数の数を知っています。しかし、ほとんどの引数は文字列です。
だから、
if (numberOfArguments == 3)
{
try
{
String.Format(theTranslatorString, "", "", "")
}
catch
{
// tell the translator there is a problem with the string format
}
}
もちろん、これは現実の生活の中で引数の数ごとの「if」なしに書き込まれます。
他のヒント
これは古典的なユニット・テストシナリオのように聞こえます。あなたはこれらのトリガをコミットし、ソースコードオフ自動ビルド/ユニットテストをドライブすることはできますか?ユニットテストは、単に、各書式文字列がまだ解析可能であることを確認します。
あなたが式の中で文字列を検証するようにあなたが に正規表現を使用する必要がありますので、
これは、見えます リンクテキストの
を見てください所属していません StackOverflow