如何在 dart 中读写 .ini 文件

How to read and write an .ini file in dart

我需要读写一个 ini 列表并从中创建一个新列表。问题是列表的结构非常复杂,我不知道如何将它拆分为一个新列表。 我的列表结构:

PaPo.1.GeoC=47.67207493,10.4114204
PaPo.2.GeoC=47.67208264,10.41141356
PaPo.3.GeoC=47.67209035,10.41140671
PaPo.4.GeoC=47.67209805,10.41139984
PaPo.5.GeoC=47.67210575,10.41139297

我想要的列表结构:

location:{
lat : 47.67207493
long : 10.4114204
lat : 47.67208264
long : 10.4114204
lat : 47.67207493
long : 10.4114204
lat : 47.67209805
long : 10.41139297
};

我假设您想要 JSON 形式的输出:

{"location": [
  {"lat": ...
   "long": ...},
  {"lat": ...
   "long": ...},
   ...
]}

您的列表结构输出提示,但没有直接说明。

你可以使用包来读取ini文件,但由于你输入的格式如此一致和清晰,我可能只是手动解析它:

final _lineRE = RegExp(r"^PaPo\.(\d+)\.GeoC=([\d.]+),([\d.]+)$", 
    multiline: true);
Map<String, List<Map<String, double>>> readIniFile(String filename) {
  var source = File(filename).readAsStringSync();
  return {"location": [for (var match in _lineRE.allMatches(source))   
      {"lat": double.parse(match[2]), "long": double.parse(match[3])}
  ]};
}

(如果输入不一定按数字顺序排列,您可能还需要考虑 int.parse(match[1])。)