Как подсчитать экземпляры подстрок в теле обмена

#apache-camel

Вопрос:

У меня есть тело,состоящее из чего-то вроде: ОК,ОК,НОК,ОК, НОК, используя Spring DSL. Я хочу подсчитать экземпляры подстроки «ОК» в теле. Я попробовал StringHelper CountChar, но вы можете передать ему только символы.

Есть ли способ подсчитать подстроки в теле, не прибегая к java-компонентам?

Ответ №1:

Вы можете использовать компонент для вызова статического метода, такого как org.apache.commons.lang.StringUtils.количество совпадений, чтобы получить количество совпадений в теле:

 from("direct:source")
    .bean(StringUtils.class, "countMatches(${body}, OK)")
    .to("log:org.orzowei.so.question.q69134695?level=WARN")
    .end();
 

Или с помощью Spring DSL:

 <route id="abcRoute" autoStartup="true">
  <from uri="direct:source"/>
  <bean beanType="org.apache.commons.lang.StringUtils" method="countMatches(${body}, OK)"/>
  <to uri="log:org.orzowei.so.question.q69134695?level=WARN"/>
</route>
 

Комментарии:

1. Спасибо, что уделили мне время, но я ищу решение в Spring DSL (формат XML).