什么是优雅的技术/方法将提取" AA"来自"简单{AA}"的字符串表达?

时间:2017-09-05 18:50:06

标签: java-8 apache-camel

使用以下示例: 表达式body()。toString()会产生"简单{AA}" ...
但是,我真的只想要" AA"价值......

- 如何从" simple {}"中提取字符串(在这种情况下:" 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....

问题: 什么是优雅的技术/方法,将提取&#34; AA&#34;来自&#34;简单{AA}&#34;的字符串表达?

2 个答案:

答案 0 :(得分:0)

只需使用Processor bean。

定义一个bean

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

使用你的路线:

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

写下您的DRY和SRP代码

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) { ... }
}

答案 1 :(得分:0)

我正在寻找的答案是使用以下表达式:

.log(“body =”+“$ {body}”);