如何将字符串转换为数组,用逗号标记android kotlin [重复]
Posted
技术标签:
【中文标题】如何将字符串转换为数组,用逗号标记android kotlin [重复]【英文标题】:how to transform string to an array, tokenizing by comma android kotlin [duplicate] 【发布时间】:2021-05-24 03:10:09 【问题描述】:我在格式化 A Room 数据库中的结果时遇到了一些问题。结果是一个大的,长的,不间断的单词,就像这样"texta,textb,textc"
当我需要它们成为一个字符串数组时,就像这样"texta","textb","textc"
所以我的问题用外行的话来说是我如何分解查询结果,以便它适用于我的 API。
这是我实现数据库功能和检索数据的方式:
mUserViewModel = ViewModelProvider(this).get(ViewModel::class.java)
mUserViewModel.readSomeData.observe(viewLifecycleOwner, Observer user ->
val abc = user
然后我将其解析为数据POST
ed 到我的 API 的函数,这就是我准备导出的方式。
val jArray = JsonArray()
val element = JsonPrimitive(abc)
jArray.add(element)
// val element = JsonPrimitive("""texta","textb","textc""")//this works
//above is what I was using to test the API when I still putting together the database.
我尝试了一些方法来达到预期的效果:
第一个是这样的:
val abc = user.split(",").toTypedArray().toString()
这把字符串变成了这个["[Ljava.lang.String;@e5daa3e"]
第二个是这样的:
val abc: String = user.toCharArray().map it.toString() .toString()
这使得其中的每个字母都像这样分解
["[t, e, x, t, a, ,, t, e, x, t, b, ,, t, e, x, t, c]"]
如果有人能告诉我如何使我发送到 API 的文本看起来像 "texta","textb","textc"
,我将非常感激。
如果有帮助,字符串将始终为 10 个字符。
感谢您的宝贵时间。
【问题讨论】:
为什么要在val abc = user.split(",").toTypedArray().toString()中调用toString()方法? 因为否则我会得到类型不匹配,JsonPrimitive
想要一个字符串。如果我只是用 out .tostring() 打印它,我仍然会得到[Ljava.lang.String;@b0e4f60
我没有在 kotlin 中编码,但我认为你创建另一个字符串,然后使用 for 循环检查字符串中的每个字符,如果那个 char == ",",你添加字符串到数组,并将字符串设置为空,否则将 char 附加到字符串。
【参考方案1】:
实现这一点的方法之一是使用 Gson 库来序列化对象,这里是一个示例:
val string = "texta,textb,textc"
val typedArray = string.split(",").toTypedArray()
val gson = Gson()
println(gson.toJson(typedArray ))
输出应如下所示:["texta","textb","textc"]
您可以在以下链接中找到更多信息https://github.com/google/gson
【讨论】:
以上是关于如何将字符串转换为数组,用逗号标记android kotlin [重复]的主要内容,如果未能解决你的问题,请参考以下文章