Groovy按'-'拆分字符串拼接索引1、2值的代码实现求助
问题原因
Groovy中直接访问超出数组长度的索引会直接抛出ArrayIndexOutOfBoundsException异常,不会返回null,所以你直接访问output[2]再做判断的逻辑还没执行到判断语句就已经报错了,数组本身也没有exists()方法,这也是报错原因之一。
正确实现方案
判断数组的长度是否≥3即可(数组索引从0开始计数,索引2对应第三个元素,数组长度≥3时该元素才存在),同时你原有代码里多余的嵌套大括号可以直接删除。
修正后的完整代码如下:
import com.sap.it.api.mapping.*; import com.sap.gateway.ip.core.customdev.util.Message; import java.util.HashMap; def String split(String input,MappingContext context){ def output = input.split("-"); // 先判断数组长度是否足够,避免越界 if (output.length >= 3) { return output[1] + output[2]; } else { // 可根据业务需要补充长度不足2时的兜底逻辑,比如返回空或者原输入 return output.length >= 2 ? output[1] : ""; } }
补充说明
如果你的业务场景能保证输入的字符串拆分后至少存在索引1的元素,可以省略兜底判断,直接返回output[1]即可。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

