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

Android Studio中Kotlin条码处理函数问题:截取指定条码段失败

问题排查与修正:Kotlin条码处理函数

原代码的核心错误

  1. 语法错误:使用了中文全角引号“0944”,Kotlin仅支持英文半角引号"0944",这会直接导致编译失败或运行异常。
  2. 逻辑计算混乱:
    • start = index -7的取值完全不符合“跳过前8位前缀”的需求,示例中“0944”起始索引为8,计算后start=1,后续截取逻辑完全偏离目标。
    • end = index +10的取值错误,导致拼接后的字符串包含了后缀的部分内容(如示例中的“32”),无法得到正确的14位中间内容。
    • 条件判断逻辑模糊,没有明确校验前缀、中间内容、后缀的长度匹配关系,容易出现误判。
  3. 需求匹配缺失:未校验条码是否以指定前缀01818710开头、以指定后缀329272结尾,仅通过indexOf("0944")判断,会误处理其他包含“0944”但不符合规则的条码。

修正后的函数代码

private fun processBarcode(barcode: String): String {
    val prefix = "01818710"
    val suffix = "329272"
    val marker = "0944"

    // 严格校验条码的前缀、标记存在、后缀规则
    if (barcode.startsWith(prefix) && barcode.contains(marker) && barcode.endsWith(suffix)) {
        // 截取前缀之后、后缀之前的中间内容
        return barcode.substring(prefix.length, barcode.length - suffix.length)
    }
    // 不满足规则则返回原条码
    return barcode
}

修正逻辑说明

  • 明确定义前缀、后缀、标记字符串,让逻辑更清晰易维护。
  • 通过startsWith和endsWith严格校验条码的前后缀规则,避免误处理。
  • 直接通过前缀长度和后缀长度计算截取范围:从前缀结束的位置(索引8)开始,到总长度减去后缀长度(索引28-6=22)结束,正好得到需要保留的14位内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:39