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

Flutter:若字符串第3个字符(索引)为0则移除该字符的实现求助

修正字符串处理逻辑的问题

原代码的核心问题

  • 索引与字符访问错误:
    1. 你要判断的是第3个字符,Java字符串索引从0开始,对应索引应为2而非3;
    2. Java字符串不能直接用[索引]的方式访问字符,必须调用charAt(int index)方法;
    3. 字符比较要用单引号包裹的'0',双引号的"0"是字符串对象,和char类型用==比较永远不成立。
  • substring参数错误:
    要移除索引2的字符,后半部分应从索引3开始截取到结尾,直接用substring(3)即可;原代码的substring(4, loginToken.length - 1)会漏掉索引3的字符,且loginToken.length -1会截断最后一个字符。
  • 未处理边界情况:如果输入字符串长度小于3,调用charAt(2)会抛出越界异常,必须先做长度判断。

修正后的代码

void checkNumber(String loginToken) {
    // 先校验字符串非空且长度足够,避免异常
    if (loginToken != null && loginToken.length() >= 3) {
        // 判断第3个字符(索引2)是否为'0'
        if (loginToken.charAt(2) == '0') {
            // 拼接前2个字符 + 索引3到结尾的部分
            String finalOne = loginToken.substring(0, 2) + loginToken.substring(3);
            showSnackBarGreen(context, finalOne, finalOne);
            return;
        }
    }
    // 不满足移除条件时,直接使用原字符串(可根据需求调整逻辑)
    showSnackBarGreen(context, loginToken, loginToken);
}

测试验证

针对你的示例:

  • 输入"850666":第3个字符是索引2的'0',处理后得到"85" + "666" = "85666",符合预期;
  • 输入"8526668":第3个字符是'2',不触发移除逻辑,直接返回原字符串,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:45:42