Dart中如何设置String值最大长度 超长截断后替换为..
Dart实现指定最大长度截断字符串并追加
..标识 实现逻辑
核心处理逻辑非常清晰,分三步即可完成需求:
- 定义允许的字符串最大字符长度
- 若原字符串长度未超过限制,直接返回原字符串不做修改
- 若原字符串长度超限,截取前
maxLength位字符,在末尾拼接..后返回
基础实现代码
对应你给出的示例场景,直接编写判断逻辑即可得到预期结果:
void main() { String myValue = 'Welcome'; const int maxLimit = 4; String finalValue; if (myValue.length <= maxLimit) { finalValue = myValue; } else { finalValue = '${myValue.substring(0, maxLimit)}..'; } print(finalValue); // 输出结果:welc.. }
可复用封装方案
如果项目中多处需要用到该截断逻辑,推荐用Dart的扩展能力给String类型封装通用方法,减少重复代码:
// 为String类型扩展截断方法 extension StringTruncate on String { String truncateWithDots(int maxLength) { // 边界处理:传入的最大长度为非正数时直接返回省略标识 if (maxLength <= 0) return '..'; // 长度未超限返回原串,超限则截取后拼接标识 return length <= maxLength ? this : '${substring(0, maxLength)}..'; } } // 调用示例 void main() { String myValue = 'Welcome'; print(myValue.truncateWithDots(4)); // 输出:welc.. print('Hi'.truncateWithDots(4)); // 长度未超限,输出:Hi print('12345'.truncateWithDots(4)); // 输出:1234.. }
注意事项
Dart的String.substring(startIndex, endIndex)遵循左闭右开规则,传入substring(0, maxLength)时,会从索引0开始取值,到索引maxLength-1截止,刚好取出maxLength个字符,完全匹配长度限制要求。
内容的提问来源于stack exchange,提问作者Mohammed Hamdan
相关产品推荐
相关产品推荐

