2017-09-05 6 views
0

この例を使用して、以下:式本体()のtoString()は「シンプル{AA}」式から「AA」文字列を抽出するエレガントな手法/方法は何ですか?

... ... "シンプル{AA}を" 生み出す
しかし、私は本当に唯一の "AA" の値が欲しいです

は - どのように私は(この場合は: "AA")の文字列を抽出しますか? "シンプル{}" という表現からの...

from("timer://foo?fixedRate=true&period=" + 5000) //5 seconds... 
      .setBody(constant(s))    
      .to("direct:thingB"); 

    from("direct:thingB") 
     .setBody(constant("AA,BB")) 
      .split().tokenize(",") 
      .to("direct:thingC");  

    from("direct:thingC") 
      .log("body=" + body()); <== I want the "AA" without the "simple{}" part.... 

QUESTION:エレガントな技術/方法は何こと"AA"文字列を "simple"から抽出します{AA} "の表現?

+0

質問本体に回答を追加しないでください。私はあなたの編集をロールバックしました。解決策が見つかった場合は、あなた自身の投稿に回答を追加することをお勧めします。 – bolov

+0

答えが掲載されました。どうも! :-) – sairn

答えて

0

あなたのDRYとSRPコード書く

from("direct:thingC") 
     .log("body=" + body()) 
     .to("bean:extractData") 
     .log("body=" + body()); 

Beanを定義

<bean id="extractData" class="com.my.package.ExtractData" /> 

はそれをあなたのルートを使用します式:

.log( "body =" + "$ {body}");

+0

これらの詳細は、Camel WebサイトのSimpleドキュメントを参照してください。 –

0

単にProcessorビーンを使用してください。私が探していた答えは、次を使用することです

public class ExtractData implements Processor { 

    @Override 
    public void process(Exchange exchange) throws Exception { 
     String body = exchange.getIn().getBody(String.class); 
     String whatYouWant = applySomeRegexpOrStringSplit(body); 
     exchange.getIn().setBody(whatYouWant); 
    } 

    private String applySomeRegexpOrStringSplit(String input) { ... } 
} 
関連する問題