Android 从Kotlin中不起作用的字符串分割空间

Android 从Kotlin中不起作用的字符串分割空间,android,android-studio,kotlin,kotlin-extension,Android,Android Studio,Kotlin,Kotlin Extension,有人想知道吗?在kotlin中拆分空格(“”不起作用,我尝试使用不同的正则表达式代码,但根本不起作用 试过这个: value.split("\\s")[0]; value.split("\\s+")[0]; value.split("\\s++")[0]; 然后我提出了解决方案->创建java常量类,它包含这个函数并将字符串数组返回给kotlin类 对于这个问题,有没有其他的解决方案可以让我们直接实现这个目标 解决方案:正如@Edson Menegati所说: KOTLIN特定:工作 valu

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

试过这个:

value.split("\\s")[0];
value.split("\\s+")[0];
value.split("\\s++")[0];
然后我提出了解决方案->创建java常量类,它包含这个函数并将字符串数组返回给kotlin类

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

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

KOTLIN特定:工作

values.split("\\s".toRegex())[0]
values.split(" ")[0] 
许多人提出了这个解决方案:不起作用

values.split("\\s".toRegex())[0]
values.split(" ")[0] 
但在我的例子中,不起作用

(实际上
CharSequence#split
)可以采用正则表达式,也可以只采用按字面解释的字符串。因此:

value.split(" ")[0]
做你想做的事


如果只使用第一个元素,则通过
limit=2
会更有效。或者,更好的方法是使用。

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

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

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

value.split("\\s".toRegex())[0]
此外,正如@Thomas所建议的,您可以使用常规空格字符拆分字符串:

value.split(" ")[0]

最后一点,如果您只使用分割列表的第一个元素,您可能需要考虑使用<代码>第一个()/<代码>而不是<代码>(0)< /代码>以获得更好的可读性,并且将限制参数设置为2,以获得更好的性能。

您需要使用:

.toRegex()


Kotlin试图解决Java的
String
库存在的一些问题。例如,科特林试图更加明确

因此,该方法采用普通的
字符串
,在内部不将其用作正则表达式:

"hello world".split("\\s")[0] //no match
"hello world".split(" ")[0] // => "hello"
要显式使用实际接受正则表达式的重载
split
函数,可以使用
toRegex()
扩展名(
inline fun String.toRegex():regex(source)
):

下面显示了Kotlin解决令人困惑的
String::replaceAll
方法的另一个示例:

摘自KotlinConf,《Kotlin in in Action》一书的合著者

 val splittedStringList = "123.345-80A".split(".")
 println(splittedStringList[0])
几个分隔符

 println("123.345-80A".split(".", "-"))
使用正则表达式

 println("123.345-80A".split("\\.|-".toRegex()))

尝试Kotlin

只需使用value.split(“\s.toRegex())

1.拆分和迭代所有项

value.split("\\s".toRegex()).forEach { item ->
    //use item 
}
2.吐痰并使用第一项

value.split("\\s".toRegex()).first()
3.吐痰并使用最后一项

value.split("\\s".toRegex()).last()

顺便说一句,您不需要分号。实际上这是一个java代码:P我提到我提出了这个解决方案如果您的断言不正确,String.split()还可以接受正则表达式、模式…谢谢@AlexTa,已编辑。我无法向下滚动足够远。不,这东西在kotlin不起作用,我已经试过了this@BabulPatel如果你说有些东西“不起作用”,请始终提供你尝试过的代码、错误消息以及预期和实际输出。将
println(“Hello,world!”。拆分(“”[0])
粘贴到位于的
main
函数中,并查看它是否根据需要打印
Hello,
。此函数不会拆分字符串。它实际返回字符串的原样@托马斯
value.split("\\s".toRegex()).last()