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

Dart中如何从类列表格式字符串提取两个日期子串?

解决Dart字符串提取日期子串的问题

以下是几种可行的实现方案,根据你的实际场景选择即可:

方案一:JSON解析法(推荐,容错性强)

你的字符串格式接近JSON数组,只需将单引号替换为双引号,就能用标准JSON解析工具处理,这是最安全的方式:

import 'dart:convert';

void main() {
  String stringSample = "['2022-11-24', '2022-11-30']";
  // 替换单引号为双引号,转为合法JSON格式
  String jsonStr = stringSample.replaceAll("'", '"');
  // 解析为字符串列表
  List<String> dateList = List<String>.from(jsonDecode(jsonStr));
  
  String str1 = dateList[0];
  String str2 = dateList[1];
  
  print(str1); // 输出 2022-11-24
  print(str2); // 输出 2022-11-30
}

优势:即使后续字符串包含转义字符或格式微调(比如空格变化),JSON解析也能正确处理,稳定性最高。

方案二:字符串分割法(简单直接,适合固定格式)

如果你的字符串格式完全固定,可通过字符串截取和分割快速提取:

void main() {
  String stringSample = "['2022-11-24', '2022-11-30']";
  // 移除首尾的方括号
  String innerContent = stringSample.substring(1, stringSample.length - 1);
  // 按', '分割成子串列表
  List<String> parts = innerContent.split(', ');
  // 移除每个子串的单引号
  String str1 = parts[0].replaceAll("'", '');
  String str2 = parts[1].replaceAll("'", '');
  
  print(str1);
  print(str2);
}

优势:代码简洁,无需引入额外库;缺点:格式稍有变动(比如分隔符是',\n'或多余空格)就会失效。

方案三:正则表达式法(灵活匹配,适配格式变动)

如果外层格式可能存在变化,但日期格式固定为YYYY-MM-DD,用正则匹配最灵活:

void main() {
  String stringSample = "['2022-11-24', '2022-11-30']";
  // 匹配YYYY-MM-DD格式的日期
  RegExp datePattern = RegExp(r'\d{4}-\d{2}-\d{2}');
  // 获取所有匹配结果
  Iterable<Match> matches = datePattern.allMatches(stringSample);
  
  String str1 = matches.elementAt(0).group(0)!;
  String str2 = matches.elementAt(1).group(0)!;
  
  print(str1);
  print(str2);
}

优势:只要日期格式不变,不管外层的括号、引号如何变化,都能准确提取日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:43:01