从字符串拆分空间不工作在Kotlin

有谁想知道这个? 在kotlin中拆分SPACE(“”)是不行的,我尝试了不同的正则expression式代码,但是根本不工作。

试过这个:

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

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

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

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

科特林具体:工作

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

许多人提出这个解决方案: 不工作

 values.split(" ")[0] 

但在我的情况下,这是行不通的

5 Solutions collect form web for “从字符串拆分空间不工作在Kotlin”

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

虽然Java实现确实接受一个正则expression式字符串,但Kotlin却没有。 为了它的工作,你需要提供一个实际的正则Regex对象。

为此,您需要更新您的代码,如下所示:

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

另外,正如@Thomas建议的那样,你可以使用常规的空格字符来分割你的字符串:

 value.split(" ")[0]; 

最后一点,如果仅使用分割列表的第一个元素,则可能需要考虑使用first()而不是[0] – 以获得更好的可读性,并将limit参数设置为2,以获得更好的性能。

你需要使用:

.toRegex()

 fun main(args: Array) { val str = "Kotlin com" val separate1 = str.split("\\s".toRegex())[0] println(separate1) // ------------------> Kotlin } 

String#split (实际上是CharSequence#split )可以是正则expression式,也可以是字面解释的字符串。 所以:

 value.split(" ")[0] 

做你想要的。

如果您只使用第一个元素,那么也会通过limit = 2更高效。 或者,甚至更好,使用substringBefore

 package com.kotlination.splitstring fun main(args: Array) { val str = "Kotlination.com = Be Kotlineer - Be Simple - Be Connective" val separate1 = str.split("=|-".toRegex()) println(separate1) } 

结果:

[Kotlination.com,Be Kotlineer,简单,连结]

Kotlin试图解决Java的String库所具有的一些问题。 例如,Kotlin试图更加明确。

结果, split方法接受一个正常的String并且在内部不使用它作为正则expression式:

 "hello world".split("\\s")[0] //no match "hello world".split(" ")[0] // => "hello" 

要明确地使用实际上需要正则expression式的重载split函数,可以使用toRegex()扩展( inline fun String.toRegex(): Regex (source) ):

 "hello world".split("\\s".toRegex())[0]// => "hello" 

以下显示了Kotlin解决混淆的String::replaceAll方法的另一个例子:

在这里输入图像说明

从“Kotlin in Action”的合着者Svetlana Isakova的KotlinConf 演讲中 ,

  • 为什么我不能指定我的Kotlin文件在Android Studio中的位置?
  • 当使用AsyncTask 将Object转换为GoogleMap时,我得到java.lang.RuntimeException
  • Android Studio和Kotlin:未解决的参考:也
  • 当处于调试器模式时,Android Studio 1.5与Kotlin Pluginexception。 如何解决它?
  • Android Anko警报与自定义视图错误(Kotlin)
  • 错误:链接引用失败。 - > QueuedJob
  • Android Studio Kotlin编译器警告
  • 如何使用DataSource作为数据库和网络来实现页面库?
  • Kotlin Android应用程序编译失败,消息:未解决的参考:kotlinx
  • Android测试运行时不需要启动模拟器(选择设备对话框不会出现) - 空的测试套件
  • Android Studio 3.0会添加参数提示信息吗?
  • Kotlin language will be the best programming language for Android.