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

在Kotlin中如何将坐标字符串转换为Pair类型列表?

Kotlin中转换坐标字符串为Pair<Double, Double>列表

针对你收到的这种双层方括号包裹的坐标字符串,有两种可靠的转换方式,推荐用正则表达式处理,适配更多格式细节:

方法一:正则表达式匹配(推荐)

利用正则直接捕获每个坐标对的两个数值,自动忽略首尾外层方括号、换行、空格等格式差异:

val coordinateStr = """[[45.02498, 7.55163], [45.02527, 7.55167], [45.02556, 7.55172],
[45.02564, 7.55173], [45.02582, 7.55175], [45.02582, 7.55188],
[45.02585, 7.55202], [45.02593, 7.55213], [45.026, 7.55218]]"""

// 匹配每个坐标对的正则,捕获两个数值
val regex = Regex("""\[(\d+\.?\d*),\s*(\d+\.?\d*)\]""")

val coordinateList: List<Pair<Double, Double>> = regex.findAll(coordinateStr)
    .map { match ->
        val first = match.groupValues[1].toDouble()
        val second = match.groupValues[2].toDouble()
        first to second
    }
    .toList()

正则说明

  • \[ 和 \]:匹配坐标对的左右方括号
  • (\d+\.?\d*):捕获整数或小数格式的数值(兼容45或45.02498这类写法)
  • ,\s*:匹配逗号和任意数量的空格(适配换行或多空格的情况)

方法二:字符串切割(格式严格时可用)

如果能确定字符串格式完全规范,没有额外空格或换行干扰,也可以直接切割处理:

val coordinateStr = """[[45.02498, 7.55163], [45.02527, 7.55167], [45.02556, 7.55172],
[45.02564, 7.55173], [45.02582, 7.55175], [45.02582, 7.55188],
[45.02585, 7.55202], [45.02593, 7.55213], [45.026, 7.55218]]"""

// 去掉首尾的外层方括号
val cleanedStr = coordinateStr.trimStart('[').trimEnd(']')

val coordinateList: List<Pair<Double, Double>> = cleanedStr.split("], [")
    .map { pairStr ->
        val (lat, lon) = pairStr.split(", ").map(String::toDouble)
        lat to lon
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:17:32