You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy脚本报错:Unexpected input: '('OBX.1') ? def' 咨询解决

Groovy脚本语法错误排查与需求实现

原脚本

Conclusion=+def result = []; msg.get('OBX.1') ? def con =''; for(int i=1; i<=msg.count('OBX'); ++i) { con + ((msg.get('OBX.3', i)+ (msg.get('OBX.5', i) ) + ','}; msg.get('NTE.1') ? for(int i=1; i<=msg.count('NTE'); ++i) { con + ((msg.get('NTE.3', i)+ ','};  return con.replaceAll('[\x00-\x08\x0B\x0C\x0E-\x1F]', ' ') 

报错信息

Unexpected input: '('OBX.1') ? def' @ line 1, column 37.

需求说明

判断msg.get('OBX.1')是否存在,仅当它存在时才创建字符串con并执行后续for循环拼接内容;若不存在,保持结果为空。

错误分析

  1. 三元运算符误用:Groovy的三元运算符条件 ? 表达式 : 表达式要求?后必须是单个表达式,不能直接写变量定义和代码块。要执行多段条件代码,应该用if语句而非三元运算符。
  2. 字符串拼接未赋值:con + (...)仅计算拼接结果但未赋值给con,必须改成con += (...)才能让con累积内容。
  3. 括号不匹配:多处存在多余的左括号,比如((msg.get('OBX.3', i)+ (msg.get('OBX.5', i) ) + ','}里的嵌套括号混乱,导致语法结构错误。
  4. 无效前缀代码:开头的Conclusion=+def result = [];属于无效语法,且需求中未用到result变量,可直接移除。

修正后的脚本

def con = ''
// 检查OBX.1是否存在,存在则处理OBX段
if (msg.get('OBX.1')) {
    for (int i = 1; i <= msg.count('OBX'); ++i) {
        // 拼接OBX.3和OBX.5,末尾加逗号
        con += "${msg.get('OBX.3', i)}${msg.get('OBX.5', i)},"
    }
    // 检查NTE.1是否存在,存在则处理NTE段
    if (msg.get('NTE.1')) {
        for (int i = 1; i <= msg.count('NTE'); ++i) {
            // 拼接NTE.3,末尾加逗号
            con += "${msg.get('NTE.3', i)},"
        }
    }
    // 移除控制字符,同时去掉末尾多余的逗号后返回
    return con.replaceAll('[\x00-\x08\x0B\x0C\x0E-\x1F]', '').replaceAll(/,$/, '')
} else {
    // OBX.1不存在时返回空字符串
    return ''
}

内容的提问来源于stack exchange,提问作者Geogre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:17:09