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ê
相关产品推荐
相关产品推荐

