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

Flutter/Dart如何实现提取字符串中两个指定关键词之间的文本内容

双关键词中间内容提取函数实现
static String? _getTextInBetweenTwoKeywords({
  required String inputtext,
  required String firstKeyword,
  required String secondKeyword, // 原参数名首字母大写不符合Dart小驼峰命名规范,已调整
}) {
  // 查找第一个关键词的起始位置
  final firstKeywordStart = inputtext.indexOf(firstKeyword);
  if (firstKeywordStart == -1) return null;

  // 计算第一个关键词的结束位置,后续从该位置开始查找第二个关键词,避免匹配到第一个关键词之前的内容
  final firstKeywordEnd = firstKeywordStart + firstKeyword.length;
  final secondKeywordStart = inputtext.indexOf(secondKeyword, firstKeywordEnd);
  if (secondKeywordStart == -1) return null;

  // 截取中间内容并去除首尾空白字符
  return inputtext.substring(firstKeywordEnd, secondKeywordStart).trim();
}
逻辑说明
  • 优先匹配第一个出现的firstKeyword,不存在直接返回null
  • 从第一个关键词结束的位置开始匹配第二个关键词,避免出现第二个关键词出现在第一个关键词之前的异常匹配情况
  • 第二个关键词不存在时也返回null
  • 最终返回的内容会自动去除首尾的空格、换行等空白字符,不需要可删除trim()调用
测试验证

用你给出的示例输入测试:

void main() {
  final input = "Lorem ipsum Lorem ipsum Lorem ipsum FIRSTKEYWORD - text I would like to return - SECONDKEYWORD Lorem ipsum Lorem ipsum Lorem ipsum";
  final res = _getTextInBetweenTwoKeywords(
    inputtext: input,
    firstKeyword: "FIRSTKEYWORD",
    secondKeyword: "SECONDKEYWORD"
  );
  print(res); // 输出结果:- text I would like to return -
}

补充说明:你之前写的_getTextAfterKeyword函数存在变量名不一致问题,参数声明为inputtext,代码中实际调用了text,运行会报错,统一变量名即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:39:03