首页 > 解决方案 > 如何将正则表达式匹配与 SharedPreferences 列表一起使用?

问题描述

以下正则表达式允许从特定键 (Key1) 中提取所有日期 (XXXX-XX-XX XX:XX)。

RegExp regExp = new RegExp(
  r'(?<=Text\("key1:\[[^\][]*?)\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}(?=[^\][]*])',
);
var match = regExp.allMatches(decrypted).map((z) => z.group(0));
    
prefs.setStringList("mykey",match);

有了这段代码,我在 match 的输出中

(2000-00-00 00:00, 2020-09-02 04:30, 2020-09-03 00:30, ..., 2020-09-03 10:00, 2020-09-03 10:02)

问题是prefs.setStringList只有List这种accept格式["","","",""]。如何调整我的输出以兼容?

标签: dart

解决方案


allMatches返回 an Iterable,这不是List所需的SharedPreferences。使用该toList方法传递正确的数据类型。

prefs.setStringList("mykey",match.toList());

推荐阅读