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
相关产品推荐
相关产品推荐

