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

如何在Flutter/Dart中从大字符串提取N、E坐标数据

在Flutter/Dart中提取定位数据的N、E数值方案

完全可以实现,核心思路是利用正则表达式精准匹配每组数据中的N(纬度)和E(经度)数值,再将解析后的数值存入对应列表。

实现步骤

  • 编写正则表达式:匹配格式为N:数值和E:数值的组合,确保能捕获每组的纬度和经度字符串。
  • 遍历所有匹配结果:将捕获到的字符串转换为double类型,分别存入nList和eList。

代码示例

void main() {
  // 你的定位数据大字符串
  String locationRawData = """2023/03/11 11:14:30 N:21.234985 E:72.858528 4 km/h 275.15 -0.50 9 x:+0.000 y:+0.000 z:+0.000 2023/03/11 11:14:30 N:21.234987 E:72.858437 4 km/h 275.15 -8.90 9 x:+0.000 y:+0.000 z:+0.000 2023/03/11 11:14:32 N:21.234989 E:72.858452 0 km/h 270.92 -6.90 9 x:+0.000 y:+0.000 z:+0.000 2023/03/11 11:14:33 N:21.234995 E:72.858482 0 km/h 269.48 -3.60 9 x:+0.000 y:+0.000 z:+0.000 2023/03/11 11:14:34 N:21.234997 E:72.858505 0 km/h 275.53 -1.20 9 x:+0.000 y:+0.000 z:+0.000 2023/03/11 11:14:35 N:21.234999 E:72.858521 0 km/h 276.25 0.50 9 x:+0.000 y:+0.000 z:+0.000""";

  List<double> nList = [];
  List<double> eList = [];

  // 正则规则:匹配N:和E:后的数值,支持正负号(如果有需要)
  RegExp coordRegex = RegExp(r'N:([-+]?\d+\.\d+)\s+E:([-+]?\d+\.\d+)');
  Iterable<Match> matches = coordRegex.allMatches(locationRawData);

  for (Match match in matches) {
    // 提取并解析纬度数值
    String? nValueStr = match.group(1);
    if (nValueStr != null) {
      nList.add(double.parse(nValueStr));
    }
    // 提取并解析经度数值
    String? eValueStr = match.group(2);
    if (eValueStr != null) {
      eList.add(double.parse(eValueStr));
    }
  }

  // 验证结果
  print("纬度列表(N): $nList");
  print("经度列表(E): $eList");
}

补充说明

  • 正则表达式中的[-+]?是可选的,如果你确定数据里没有负号,可以去掉,简化为r'N:(\d+\.\d+)\s+E:(\d+\.\d+)'。
  • 如果你的定位数据是从文件读取的,只需将locationRawData替换为文件读取的字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:52