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

String类无'-'实例方法,用什么方法可删除String类型变量中的字符?

问题原因

Dart的String类型未重载-操作符,直接使用-操作符对字符串做删除操作就会触发Class 'String' has no instance method '-'报错。

可替代的字符删除方案

针对你构造的全*组成的ngang字符串,常用删除方法如下:

  • 方案1:删除指定位置的字符
    通过substring方法拼接前后半段字符串实现,例如下方代码删除索引为i的字符:

    // 注意判断i的合法范围,避免越界
    if (i >=0 && i < ngang.length) {
      ngang = ngang.substring(0, i) + ngang.substring(i + 1);
    }
    
  • 方案2:删除指定字符
    要删除所有匹配的指定字符用replaceAll,只删除第一个匹配的用replaceFirst:

    // 删除所有*
    ngang = ngang.replaceAll('*', '');
    // 删除第一个出现的*
    ngang = ngang.replaceFirst('*', '');
    
  • 方案3:删除末尾N个字符
    当前构造的字符串是按顺序拼接生成的,最常见的需求是删除末尾字符,直接截取对应长度即可:

    int deleteCount = 1; // 要删除的末尾字符数量
    if (ngang.length >= deleteCount) {
      ngang = ngang.substring(0, ngang.length - deleteCount);
    }
    
  • 方案4:频繁增删字符串的优化方案
    如果字符串需要频繁做增删操作,更推荐使用StringBuffer构造,性能更高且内置删除方法:

    // 构造阶段
    StringBuffer ngangBuffer = StringBuffer();
    for (int i = 0; i < x; i++) {
      ngangBuffer.write('*');
    }
    String ngang = ngangBuffer.toString();
    
    // 删除阶段,示例删除最后1个字符
    int deleteEnd = ngangBuffer.length;
    int deleteStart = deleteEnd - 1;
    if (deleteStart >= 0) {
      ngangBuffer.delete(deleteStart, deleteEnd);
      ngang = ngangBuffer.toString();
    }
    // 清空所有字符直接调用 ngangBuffer.clear()
    

内容的提问来源于stack exchange,提问作者Thị Lê

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 08:36:00