使用以下示例: 表达式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;的字符串表达?
答案 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}”);