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

Flutter中如何拆分字符串并保留分隔符(含正负号坐标拆分场景)

Flutter 拆分保留正负号的坐标字符串实现

核心思路

针对输入的带冗余字符的坐标串<p>+37.4054-122.0999/,不需要硬编码分割索引,用正则匹配直接提取带正负前缀的数值段,就能完整保留+/-符号,不会出现符号被当成分隔符丢失的问题。

具体实现步骤

  • 先做字符串预处理:剔除开头的<p>标签、结尾的/冗余字符,得到纯坐标内容+37.4054-122.0999
  • 编写匹配规则:用正则[+-]\d+\.\d+匹配所有以正号/负号开头、后跟浮点数的片段,符号会被包含在匹配结果内
  • 提取所有匹配结果,即可得到目标子串列表

可直接运行的代码示例

// 坐标字符串拆分逻辑
List<String> splitCoordinate(String rawInput) {
  // 清洗冗余字符,拿到纯坐标串
  final cleanCoordinate = rawInput.replaceAll(RegExp(r'(^<p>|/$)'), '');
  // 匹配所有带正负号的坐标片段
  final matchResult = RegExp(r'[+-]\d+\.\d+')
      .allMatches(cleanCoordinate)
      .map((item) => item.group(0)!)
      .toList();
  return matchResult;
}

// 调用测试
void main() {
  const testStr = '<p>+37.4054-122.0999/';
  final res = splitCoordinate(testStr);
  print(res); // 控制台输出: [+37.4054, -122.0999]
}

补充说明

如果你的输入本身就是没有冗余字符的纯坐标拼接串,直接跳过预处理步骤,对纯串执行正则匹配即可。该写法兼容多段坐标拼接的场景,不需要固定写死拆分2段的逻辑,适配性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:12:20