Android 从Kotlin中不起作用的字符串分割空间
有人想知道吗?在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
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()