【问题标题】:Mule MEL to do substring on a flow variableMule MEL 在流变量上执行子字符串
【发布时间】:2014-06-29 00:17:30
【问题描述】:

我有一个变量 my_variable,其值为动态 URL,例如 --

http://stackoverflow.com/questions/ask

我想在这个动态 URL 上做一个子字符串来查找最后一个“/”之后的字符串,即在上面提到的 URL 的情况下,我想得到子字符串“ask”

如何使用 MEL 来做到这一点?

【问题讨论】:

    标签: mule mule-el


    【解决方案1】:

    您可以在变量上使用基本的Java String 方法,例如substring()lastIndexOf()

    【讨论】:

      【解决方案2】:
      #[flowVars['my_variable'].substring(flowVars['my_variable'].lastIndexOf('/'))]
      

      哪个更简单

      【讨论】:

      • 这与@user1760178 的答案相同,只是您的答案缺少必要的井号。
      • 虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期性价值。
      【解决方案3】:

      您可以使用 java.lang 包中提供的字符串函数。

      #[flowVars['my_variable'].substring(flowVars['my_variable'].lastIndexOf('/'))]
      

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        您可以在 MEL 中使用 JDK 类,实际上这些包是自动导入的 (http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Reference):

        • java.lang.*
        • java.io.*
        • java.net.*
        • java.util.*
        • java.math.BigDecimal
        • java.math.BigInteger
        • javax.activation.DataHandler
        • javax.activation.MimeType
        • java.util.regex.Pattern
        • org.mule.api.transformer.DataType
        • org.mule.transformer.types.DataTypeFactory

        此流程在端口 8081 上接收请求并返回路径的最后一部分:

        <flow name="testedbFlow3">
            <http:inbound-endpoint host="0.0.0.0" port="8081" />
            <expression-transformer expression="#[message.inboundProperties['http.request'].split(&quot;^.*/&quot;)[1]]"/>
        </flow>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-13
          • 1970-01-01
          • 2021-06-26
          • 1970-01-01
          • 2021-10-11
          • 1970-01-01
          相关资源
          最近更新 更多