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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:21:46