Javaプログラムでは、サーバから取得するFormatter.format()
関数のStringを使用しています。 String
にはプレースホルダまたは有効な数の文字列が含まれているとは確信できません。 String
が期待どおりでない場合は、例外をスローしたいと思います。Formatter.format()のプレースホルダーの数を取得するString
この時点では、どのタイプのプレースホルダーが(、Integer
、...)であるか気にせず、各文字列に期待されるパラメータの数を取得したいだけです。
これを達成する最も簡単な方法は何ですか? 1つの方法は、正規表現を使用することができますが、私は、より便利な何かがあると思っています - たとえば、組み込みの関数です。ここ
は、いくつかの例は、次のとおり
Example String | number of placeholders:
%d of %d | 2
This is my %s | 1
A simple content. | 0
This is 100% | 0
Hi! My name is %s and I have %d dogs and a %d cats. | 3
EDIT: Formatter.format()十分に提供されたパラメータが存在しない場合に例外をスローします。プレースホルダのないStringを取得する可能性があります。この場合、たとえパラメータを提供しても(例外はありません)、例外はスローされません(私はスローしたいと思いますが)、その文字列の値だけが返されます。私はサーバーにエラーを報告する必要があります。
はどのようにして、 "あなたが期待するものではない" ことができますか?予想されるプレースホルダーの数は分かっているはずですが、デフォルト値で書式を設定して失敗するかどうかを確認できますか? –
私は組み込み関数についてはわかりませんが、私の最初の考えは正規表現です。正規表現の使用に関する特定の懸念はありますか? – Hill
@AndyTurner私は十分に明確ではありませんでした。十分なパラメータを提供しないと、formatメソッドが例外をスローすることがわかります。私の問題は、あまりにも多くのパラメータを提供しても例外をスローしたいからです。そのため、プレースホルダの数が必要になります。 – urgas9