【问题标题】:How to convert string which have array and string elements inside it, to fetch each element from the array in Kotlin [Android]如何转换其中包含数组和字符串元素的字符串,以从 Kotlin [Android] 中的数组中获取每个元素
【发布时间】:2022-09-23 10:50:28
【问题描述】:

我的输出如下所示:

[\"Floor 0\",\"Floor 1\",\"Floor 2\"]

它以字符串的形式出现。但我想获取这个数组的每个元素。如何使用 Kotlin 做到这一点?

  • 所以你的输入是 \"[\\\"Floor 0\\\",\\\"Floor 1\\\",\\\"Floor 2\\\"]\" ? Arrays.stream(aa.replaceAll(\"\\[\", \"\").replaceAll(\"\\]\", \"\").replaceAll(\"\\\"\",\ "\").split(\",\")).toList() 我相信有更好的方法,但这是最简单的:)
  • 是的,我的输入是\"[\"Floor 0\",\"Floor 1\",\"Floor 2\"]\"

标签: java android arrays string kotlin


【解决方案1】:

只需使用正则表达式为双引号之间的每个 CharSequence 创建一个匹配项。由于您只想使用引号之间的值,您可以提取第一个索引组值。以下代码 sn-p 可以满足您在 Kotlin 中的要求:

val str = "[\"Floor 0\",\"Floor 1\",\"Floor 2\"]"

val pattern = Regex( "\"(.*?)\"")

val fetched_elements = pattern.findAll(str).map {
    it.groupValues[1]
}.toList()

// creates the list: [Floor 0, Floor 1, Floor 2]

也可以使用这个RegExr example 来详细探索这个并进行解释。

【讨论】:

    【解决方案2】:

    如果您的内部字符串不允许有逗号,您可以使用 split 函数将其转换为列表:

    var lst = str.replace("\"", "").split(",")
    

    如果您的内部字符串可以有尾随空格,这会更好:

    var lst = str.replace("\"", "").split(",").map {it.trim()}
    

    在上面的代码行中,替换函数删除了每个内部字符串周围的引号; split 在每个逗号处分隔字符串;并且 trim 函数会删除任何周围的空白字符。

    如果你的内部字符串能够包含逗号,您最好学习和使用另一个答案中提到的正则表达式。

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2018-05-29
      • 1970-01-01
      相关资源
      最近更新 更多