4

抽出したい16進数で表されたいくつかのバイトを保持する文字列があります。例えば:

String str = "051CF900: 00 D3 0B 60 01 A7 16 C1  09 9C"

値を抽出し、それらを文字列に連結して、次のようにします。

00D30B6001A716C1099C

私の試み:

String stream = "";
Pattern pattern = Pattern.compile("\\b[A-F0-9]{2}\\b");
matcher = pattern.matcher(str);
matcher.find{ newByte ->
  println(newByte);
  stream += newByte;
};
println(stream);

各バイトをに追加しようとすると、streamループが停止するようです。その行を削除すると、各バイトが正常に出力されます。newByteに追加するとループが壊れるのはなぜstreamですか?

4

2 に答える 2

7

これは Groovy であるため、すべてのコードを次のように変更できます。

String stream = str.findAll( /\b[A-F0-9]{2}\b/ ).join()
于 2013-01-18T10:54:53.993 に答える
3

Groovyの場合、からすべての一致を見つける必要がありますString。交換:

matcher.find { newByte ->

matcher.findAll { newByte ->
于 2013-01-18T00:38:45.430 に答える