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

如何按‘|’拆分数据库列结果集并获取每行第二个值及校验

代码问题分析与修正

核心问题点

  • 正则转义错误:split("|")里的|是正则元字符,会被当作“或”逻辑拆分每个字符(比如34567|001会拆成["3","4","5","6","7","|","0","0","1"]),正确写法是split("\\|"),用双反斜杠转义让正则把|当作普通分隔符。
  • 数组调用字符串方法:res.replaceAll("\\s", "")完全错误,res是String[]数组,根本没有replaceAll方法,会直接编译报错。应该先对原始字符串做空格清理,再拆分。
  • 逻辑冗余错误:代码里对数组二次拆分完全没必要,正确流程是清理原始字符串→按|拆分→直接取索引为1的元素(数组从0开始,第二个值对应索引1)。
  • 语法错误:if(ves.contains("001") && (ves.contains("002"))少了一个右括号,应该改成if(ves.contains("001") && ves.contains("002"))。
  • 类型不安全:List ves=Arrays.asList(version);没指定泛型,应该写成List<String> ves=Arrays.asList(version);,避免类型转换问题。

修正后的代码示例

批量处理多行数据(收集所有版本号后校验)

List<String> versionList = new ArrayList<>();
// 假设这里是遍历数据库结果集的循环
while (TBOOKER_TRD_INTFTable.next()) {
    // 先清理字符串里的空格,再拆分
    String cleanStr = TBOOKER_TRD_INTFTable.getString("EXT_T_ID_C").replaceAll("\\s", "");
    String[] parts = cleanStr.split("\\|");
    // 防止数据格式错误导致数组越界
    if (parts.length >= 2) {
        String version = parts[1];
        versionList.add(version);
        System.out.println("提取到版本号:" + version);
    } else {
        System.out.println("数据格式异常:" + cleanStr);
    }
}

// 校验是否同时包含001和002
if (versionList.contains("001") && versionList.contains("002")) {
    System.out.println("version is correct");
} else {
    System.out.println("version is incorrect");
}

单条数据处理(直接提取并校验)

String cleanStr = TBOOKER_TRD_INTFTable.getString("EXT_T_ID_C").replaceAll("\\s", "");
String[] parts = cleanStr.split("\\|");
if (parts.length >= 2) {
    String target = parts[1];
    System.out.println(target);
    // 校验当前值是否为目标版本
    if ("001".equals(target) || "002".equals(target)) {
        System.out.println("当前版本号正确");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:55:24