在 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
知道怎么做,我找不到库来做它
【问题讨论】:
如果它们都被,
分隔,你可以使用string
的split
函数,并相应地映射。
如果您正在尝试构建通用解决方案。您可以使用解决方法。使用地理编码器获取 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 中将字符串转换或提取为地址类型的主要内容,如果未能解决你的问题,请参考以下文章
在 Java (Android 1.6 API) 中将 String 转换为 CharSequence 或 char[]