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

如何在Dart的String中提取两个固定唯一标识间的内容?

在Dart中提取两个固定唯一标识间字符串的最优实现

已知场景:字符串中两个标识固定且唯一,以'helloWorld'为例,要提取'hel'和'ld'之间的内容(预期结果'loWor'),最优实现方式如下:

实现代码

void main() {
  String myValue = 'helloWorld';
  const startMarker = 'hel';
  const endMarker = 'ld';
  
  // 获取起始标识的结束索引
  final startIdx = myValue.indexOf(startMarker) + startMarker.length;
  // 获取结束标识的起始索引
  final endIdx = myValue.indexOf(endMarker);
  
  // 校验标识有效性与顺序
  if (startIdx != startMarker.length - 1 && endIdx != -1 && startIdx < endIdx) {
    final extractedContent = myValue.substring(startIdx, endIdx);
    print(extractedContent); // 输出: loWor
  } else {
    // 处理异常情况
    print('标识不存在或顺序错误');
  }
}

方案优势

  • 性能最优:直接使用Dart字符串内置的indexOf和substring方法,避免正则表达式的额外解析开销,对于固定唯一标识的场景,比正则匹配更高效。
  • 逻辑清晰:通过定位标识位置直接截取内容,代码可读性强,易于维护。
  • 异常安全:增加了有效性校验,避免因标识缺失或顺序颠倒导致的运行时范围错误。

简洁版(需确保标识必存在且顺序正确)

如果能保证两个标识一定存在且起始标识在结束标识之前,可以简化为:

final result = myValue.substring(
  myValue.indexOf(startMarker) + startMarker.length,
  myValue.indexOf(endMarker)
);

内容的提问来源于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.22 10:18:19