从字符串中拆分空间在 Kotlin 中不起作用

新手上路,请多包涵

有人想知道吗?在 kotlin 中拆分 SPACE (” “) 不起作用,我尝试使用不同的正则表达式代码但根本不起作用。

试过这个:

 value.split("\\s")[0];
value.split("\\s+")[0];
value.split("\\s++")[0];

然后我想出了解决方案-> 创建包含此函数的 java 常量类并将字符串数组返回给您的 kotlin 类。

对于这个问题,我们有没有其他的解决方案可以直接实现这个东西?

解决方案: 正如@Edson Menegatti 所说:

KOTLIN 特定:工作

values.split("\\s".toRegex())[0]

许多人提出了这个解决方案: NOT WORKING

 values.split(" ")[0]

但就我而言,它 不起作用

原文由 Harsh Patel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 349
2 个回答

这是 String.split 的 Java 和 Kotlin 实现之间的一个问题。

虽然 Java 实现确实接受正则表达式字符串,但 Kotlin 实现不接受。为了让它工作,您需要提供一个实际的 Regex 对象。

为此,您需要按如下方式更新代码:

 value.split("\\s".toRegex())[0]

此外,正如@Thomas 所建议的,您可以使用常规空格字符将字符串拆分为:

 value.split(" ")[0]

最后一点,如果您只使用拆分列表的第一个元素,您可能需要考虑使用 first() 而不是 [0] - 为了更好的可读性 - 并将限制参数设置为2 - 为了更好的性能。

原文由 Edson Menegatti 发布,翻译遵循 CC BY-SA 4.0 许可协议

您需要使用:

.toRegex()

 fun main(args: Array<String>) {
        val str = "Kotlin com"

        val separate1 = str.split("\\s".toRegex())[0]
        println(separate1) // ------------------> Kotlin
}

要么

您也可以使用 .split(" ")[0] 来获得结果。像

fun main(args: Array<String>) {
            val str = "Kotlin com"

            val separate1 = str.split(" ")[0]
            println(separate1) // ----------> Kotlin
}

原文由 Nikunj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题