Flutter 如何对颤振中列表的每个索引迭代此函数?
我有一个复杂的解决方案,可以从列表中提取日期和小时,并在正则表达式中添加日期和小时,以找到关联的值,并将所有内容保存在SharedReference中。如果我手动关注输入列表的一个特定索引,这是可行的 但我的问题是,我不知道如何为输入列表[]的每个索引迭代代码 我输入了日期和时间的列表Flutter 如何对颤振中列表的每个索引迭代此函数?,flutter,Flutter,我有一个复杂的解决方案,可以从列表中提取日期和小时,并在正则表达式中添加日期和小时,以找到关联的值,并将所有内容保存在SharedReference中。如果我手动关注输入列表的一个特定索引,这是可行的 但我的问题是,我不知道如何为输入列表[]的每个索引迭代代码 我输入了日期和时间的列表 [2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10] match_date = 2020-09-05 match_hour = 08 我选择第一个索引[1]
[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
我选择第一个索引[1]=>2020-09-05 10:00
我用正则表达式提取日期和时间
[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
使用正则表达式,我在另一个文件中搜索与日期和小时相关的值
[2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
match_date = 2020-09-05
match_hour = 08
现在我有了日期小时和值,我可以将其保存在SharedReference键(日期,小时)值(找到的值)中
但是这种方法只适用于确定的索引,这里是索引[1],但是如果我有n个索引,我想做这个函数n次
我试试这个
for (var i = 0; i < MyList.length; i++) {
List<String> MyList ;
MyList= prefs.getStringList("save_list"); // load list [2020-09-05 10:00,2020-09-06 08:02,2020-09-07 03:10]
final MylistasMap = MyList.asMap(); //convert list in map
RegExp regExp1 = new RegExp(
r'(\d{4}-\d{2}-\d{2})',);
var match_date = regExp1.firstMatch(MylistasMap[i]); // match only date format XXXX-XX-XX of index[1] of MyList [2020-09-05,2020-09-06,2020-09-07]
if(match_date!=null ) {
var date = match_date.group(1);
RegExp regExp2 = new RegExp(
r'(\d*):',
);
var match_hour = regExp2.firstMatch(MylistasMap[i]); // match only hour of index[1]
if (match_hour != null) {
var hour = match_hour.group(1);
RegExp regExp3 = new RegExp(
r'((?<='+date+',conso_h'+hour+':)[1-9]\S[^"]*)', // match double value in other_file, saved with specific date, hour found previously in the list
);
var match_value = regExp3.firstMatch("$other_file"); // other_file is a String with all date and value saved
if (match_value != null) {
var value_conso = match_value.group(1);
double val_double_value_conso = double.parse(value_conso);
prefs.setDouble('$date,conso_h$hour', val_double_value_conso);
}
}
}
}
for(变量i=0;i r'((?我编写了一个程序,它将遍历所有列表项并打印日期和小时:
我删除了otherFile
语句,因为我不知道另一个文件中有什么,但您可以继续添加另一个文件并传递其他文件
myList.forEach((element) {
RegExp regExp1 = new RegExp(
r'(\d{4}-\d{2}-\d{2})',
);
var match_date = regExp1.firstMatch(
element); // match only date format XXXX-XX-XX of index[1] of MyList [2020-09-05,2020-09-06,2020-09-07]
if (match_date != null) {
var date = match_date.group(1);
RegExp regExp2 = new RegExp(
r'(\d*):',
);
print('Date: $date');
var match_hour =
regExp2.firstMatch(element); // match only hour of index[1]
if (match_hour != null) {
var hour = match_hour.group(1);
print('Hours: $hour');
RegExp regExp3 = new RegExp(
r'((?<=' +
date +
',conso_h' +
hour +
':)[1-9]\S[^"]*)', // match double value in other_file, saved with specific date, hour found previously in the list
);
}
}
});
一个for循环来迭代列表中的每一项应该是有效的不?基本上是将代码包装在for循环中…(即,对于每个元素都是list do…)当然^^^我不知道如何在我的例子中正确编写它,但是的,我认为这是类似于我“只”需要迭代MyListMap[1 2 3…n]对于Mylistwrap的每个索引,使用MyList.forEach((element){your RegExp statements})中的语句;
然后使用计时器函数调用n time wrap