【发布时间】:2014-06-29 00:17:30
【问题描述】:
我有一个变量 my_variable,其值为动态 URL,例如 --
http://stackoverflow.com/questions/ask
我想在这个动态 URL 上做一个子字符串来查找最后一个“/”之后的字符串,即在上面提到的 URL 的情况下,我想得到子字符串“ask”
如何使用 MEL 来做到这一点?
【问题讨论】:
我有一个变量 my_variable,其值为动态 URL,例如 --
http://stackoverflow.com/questions/ask
我想在这个动态 URL 上做一个子字符串来查找最后一个“/”之后的字符串,即在上面提到的 URL 的情况下,我想得到子字符串“ask”
如何使用 MEL 来做到这一点?
【问题讨论】:
您可以在变量上使用基本的Java String 方法,例如substring() 和lastIndexOf()。
【讨论】:
#[flowVars['my_variable'].substring(flowVars['my_variable'].lastIndexOf('/'))]
哪个更简单
【讨论】:
您可以使用 java.lang 包中提供的字符串函数。
#[flowVars['my_variable'].substring(flowVars['my_variable'].lastIndexOf('/'))]
希望这会有所帮助。
【讨论】:
您可以在 MEL 中使用 JDK 类,实际上这些包是自动导入的 (http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Reference):
此流程在端口 8081 上接收请求并返回路径的最后一部分:
<flow name="testedbFlow3">
<http:inbound-endpoint host="0.0.0.0" port="8081" />
<expression-transformer expression="#[message.inboundProperties['http.request'].split("^.*/")[1]]"/>
</flow>
【讨论】: