如何将字符串转换为数组,用逗号标记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

然后我将其解析为数据POSTed 到我的 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将逗号分隔的字符串转换为数组? [复制]

java中如何将字符数组转换成字符串,以逗号分割

java中如何将字符数组转换成字符串,以逗号分割

如何将数组转换为逗号分隔的单词字符串? [复制]

JS如何把一个数字数组转换成一个数字。

将字符串拆分为标记并将标记分成两个单独的数组