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

使用equalsIgnoreCase校验字符串返回false,如何有效校验多列字段值

你当前的校验逻辑是直接将单个预期值Predictive和完整的实际串Enforcement Type Predictive PEDP做全量相等匹配,两者本身内容长度就不一致,所以equalsIgnoreCase必然返回false。你需要先把实际返回的整行文本按列拆分后,再分别校验对应列的值即可。

解决方案步骤
  • 首先对拿到的实际值做预处理:去除首尾空白字符,再按列分隔规则拆分为独立的列字段数组。从你给出的示例来看,列与列之间用多个空格分隔,列内部的空格(比如第一列的Enforcement Type)是单个空格,所以可以用split("\\s{2,}")按2个及以上连续空格拆分。如果你的实际数据是用制表符分隔列,将拆分规则替换为split("\\t")即可。
  • 校验拆分后的数组长度是否符合预期,避免后续取值出现数组越界异常。
  • 取拆分后对应下标的列值,分别和expectedResult(第二列,下标为1)、sourceVal(第三列,下标为2)做相等校验即可。
修改后的参考代码
public void validateKeyInfo_1(String expectedResult, String elementId, String sourceVal) {
    String actualValue = getElement(elementId).getText();
    // 空值前置校验
    if (StringUtils.isBlank(actualValue)) {
        if (expectedResult == null && StringUtils.isBlank(sourceVal)) {
            scenario.log(LogStatus.INFO, "实际值为空,符合预期");
            return;
        }
        reportFailure("实际值为空,与预期不符");
        return;
    }
    // 按多空格拆分列,可根据实际分隔规则调整拆分参数
    String[] columns = actualValue.trim().split("\\s{2,}");
    // 校验列数是否足够,这里预期至少3列
    if (columns.length < 3) {
        reportFailure("实际值列数不足,无法完成校验");
        return;
    }
    // 分别校验第二列、第三列
    boolean expectedMatch = (expectedResult == null) || expectedResult.equalsIgnoreCase(columns[1]);
    boolean sourceMatch = (sourceVal == null) || sourceVal.equalsIgnoreCase(columns[2]);
    
    if (expectedMatch && sourceMatch) {
        scenario.log(LogStatus.INFO, "校验通过,预期结果:" + expectedResult + ",实际第二列值:" + columns[1]);
        scenario.log(LogStatus.INFO, "校验通过,源值:" + sourceVal + ",实际第三列值:" + columns[2]);
    } else if (!expectedMatch) {
        reportFailure("第二列值不匹配,预期:" + expectedResult + ",实际:" + columns[1]);
    } else {
        reportFailure("第三列值不匹配,预期:" + sourceVal + ",实际:" + columns[2]);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:09:03