4

私は MessageFormat を持っています。

final MessageFormat messageFormat = new MessageFormat("This is token one {0}, and token two {1}");

次のような文字列があるかどうか疑問に思っています。

String shouldMatch = "This is token one bla, and token two bla";
String wontMatch = "This wont match the above MessageFormat";

上記の文字列が messageFormat を使用して作成されたかどうかを確認するにはどうすればよいですか? つまり、それらは messageFormat と一致しますか?

どうもありがとう!

4

2 に答える 2

7

これは、正規表現PatternおよびMatcherクラスを使用して行うことができます。簡単な例:

Pattern pat = Pattern.compile("^This is token one \\w+, and token two \\w+$");
Matcher mat = pat.matcher(shouldMatch);
if(mat.matches()) {
   ...
}

正規表現の説明:

^ = beginning of line
\w = a word character. I put \\w because it is inside a Java String so \\ is actually a \
+ = the previous character can occur one ore more times, so at least one character should be there
$ = end of line

トークンをキャプチャする場合は、次のように中かっこを使用します。

Pattern pat = Pattern.compile("^This is token one (\\w+), and token two (\\w+)$");

mat.group(1)およびを使用してグループを取得できますmat.group(2)

于 2013-07-23T09:07:48.290 に答える