在 Android 中将字符串转换或提取为地址类型

Posted

技术标签:

【中文标题】在 Android 中将字符串转换或提取为地址类型【英文标题】:Convert or Extract String to Address type in Android 【发布时间】:2021-12-19 06:33:59 【问题描述】:

我正在尝试将字符串转换为地址格式。目标是有一个像

这样的字符串

“12233 Abbb street, Los Angeles, CA 92666”到 a

address: 12233 Abbb street
address2:
city: Los Angeles
state: CA
zip: 92666

知道怎么做,我找不到库来做它

【问题讨论】:

如果它们都被,分隔,你可以使用stringsplit函数,并相应地映射。 如果您正在尝试构建通用解决方案。您可以使用解决方法。使用地理编码器获取 LatLng,然后对 LatLng 进行反向地理编码以获取位置的具体详细信息 【参考方案1】:

不需要其他库来实现它,只需使用字符串分隔即可。

当然,这个解决方案不是最好的解决方案。从根本上解决数据格式问题需要什么。简单地使用字符串不是一个很好的方法。更需要Json或者其他字符串格式来解决问题。

下面是我的转换代码:

data class Entity(
     val address: String = "",
     val address2: String = "",
     val city: String = "",
     val state: String = "",
     val zip: Int = 0
)

fun String.convertToEntity(): Entity 
     val array = split(",")
     if (array.size <3) return Entity()
     return Entity(
         address = array.firstOrNull() ?: "",
         city = array[1],
         state = array.lastOrNull()?.split(" ")?.firstOrNull it.isNotEmpty() ?: "",
         zip = array.lastOrNull()?.split(" ")?.lastOrNull it.isNotEmpty() ?.toIntOrNull() ?: 0
     )

相信我,纯字符串无法解决您的问题。一旦后端返回给你的数据有错误,或者你在填写界面时输入了更多的空格。上面的代码会有问题。

更新

正如 Gabe Sechan 所说,图书馆是必需的。我对类似的库没有任何建议。以上答案仅供提问。如果有人找到类似的库,请告诉我。提前致谢。

【讨论】:

说不需要其他库至少是一种误导。没有一种通用的地址格式。有数百个。如果他需要编写任何远程类似于生产的东西,他将需要一个库,或者他将要修复多年的错误。并且说“你需要 JSON”是在那个时候,但现实是当人们输入他们的地址时,它不会是一个 JSON blob。有时需要解析字符串地址。 你能给我提供一个类似的库吗? 我无法提供推荐,因为我已经有太多年没有和一个人合作了。但是快速谷歌搜索找到一些开源解决方案,我知道也有付费的。 “没有类似的库”具有误导性,我将修改我的答案。非常感谢您的时间和精力

以上是关于在 Android 中将字符串转换或提取为地址类型的主要内容,如果未能解决你的问题,请参考以下文章

无法在 xml 查询中将字符串转换为数字类型

在 Java (Android 1.6 API) 中将 String 转换为 CharSequence 或 char[]

JavaScript中将字符串类型转换为整形的函数

在python中将IPv4地址转换为十六进制

如何在 Android Java 中将 MAC 地址转换为 IP?

如何在 Swift 中将 JSON 转换为数据类型?