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

Flutter中如何提取特定单词后的目标内容

在Flutter中可靠提取"cost"后的交易金额方案

Hey! 针对你提到的不能用固定位置提取、需要适配字符串变化的需求,正则表达式是最靠谱的解决方案——它基于内容语义匹配,完全不受字符串长度或前置内容变化的影响。

实现思路

观察你的消息格式,交易金额总是紧跟在cost, 之后,直到下一个句号结束。我们可以用正则精准定位这个模式,捕获中间的金额内容。

代码示例

void extractTransactionCost() {
  String message = 'QG935XSVSD Confirmed. Your account balance was: M-PESA Account : Ksh0.00 on 9/7/22 at 12:33 PM. Transaction cost, Ksh0.00. Dial *334# now to get your stamped M-Pesa Statement.';
  
  // 正则表达式:匹配"cost, "后的非空白字符,直到遇到句号
  final costRegex = RegExp(r'cost, (\S+)\.');
  
  // 查找第一个匹配项
  final match = costRegex.firstMatch(message);
  
  if (match != null) {
    final transactionCost = match.group(1)!;
    print('提取到的交易费用:$transactionCost'); // 输出: Ksh0.00
  } else {
    // 处理未找到匹配的情况
    print('未检测到交易费用信息');
  }
}

正则说明

  • cost, :精确匹配固定的文本片段,确保定位到交易费用的前缀
  • (\S+):捕获一个或多个非空白字符(对应金额部分,比如Ksh0.00)
  • \.:匹配金额后的句号,避免捕获多余内容

适配灵活格式

如果后续消息格式有小调整(比如变成cost: Ksh0.00或cost Ksh0.00),只需微调正则即可兼容:

// 兼容逗号、冒号或空格分隔的情况
final flexibleCostRegex = RegExp(r'cost[,:]? (\S+)\.');

这种方案的优势在于,不管消息前面新增多少内容、长度怎么变,只要交易费用的语义结构不变,就能稳定提取目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:04:10