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

如何编写Dart函数实现字符串按4字符分块且末尾无连字符?

Dart字符串按每4字符分组并添加连字符的实现

正确实现代码

循环截取法(直观易读)

String splitStringIntoBlocks(String input) {
  final blocks = <String>[];
  for (var i = 0; i < input.length; i += 4) {
    final end = i + 4 > input.length ? input.length : i + 4;
    blocks.add(input.substring(i, end));
  }
  return blocks.join('-');
}

正则表达式法(简洁高效)

String splitStringIntoBlocks(String input) {
  return input.replaceAllMapped(
    RegExp(r'.{1,4}'),
    (match) => match.group(0)!,
  ).join('-');
}

测试验证

  • 输入 "tgifzero" → 返回 "tgif-zero"
  • 输入 "234567890123" → 返回 "2345-6789-0123"
  • 输入空字符串 → 返回空字符串
  • 输入不足4字符的字符串(如 "abc")→ 返回原字符串

为什么之前用split方法不行?

split方法是基于指定分隔符拆分字符串,而我们的需求是按固定长度拆分,两者逻辑完全不匹配。你之前得到错误结果,就是因为用了不符合需求的拆分逻辑,导致分组长度混乱。

上面两种方法都是先把字符串拆分成符合要求的子串列表,再用join('-')连接——这种方式天然避免了末尾出现多余连字符的问题,因为join只会在列表元素之间添加分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:42:17