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
相关产品推荐
相关产品推荐

