Kotlin:如何获取字符串中“@”后面的字符?
我有一个字符串,是一个电子邮件。 我希望能够得到电子邮件的域名部分,不管字符串/电子邮件是什么。 基本上我想要获得@字符串后面的字符。 例如,对于testing@kotlin.com,我在kotlin.com部分之后。
val emailString =“hello@world.com”
只是为了完整:
val string = "hello@world.com" val index = string.indexOf('@') val domain: String? = if (index == -1) null else string.substring(index + 1)
如果它存在,则将@
之后的部分分配给domain
,否则为null
。 默认情况下,它返回字符串本身。
对于学习,IntelliJ的Java – > Kotlin转换器可能是有用的。
快捷键是,IIRC, Ctrl + Alt + Shift + K。
你甚至可以把它作为扩展属性:
val String.domain: String? get() { val index = string.indexOf('@') return if (index == -1) null else string.substring(index + 1) }
然后你就可以做了
println("hello@world.com".domain)
让你可以将这段代码缩短为一行:
string.indexOf('@').let { if (it == -1) null else string.substring(it + 1) }
Ivan Wooll的答案提出了使用substringAfterLast
的观点,尽管这不能返回null
。
编辑:解决你的评论,你不能在同一个文件中使用Java和Kotlin。 但是,在同一个项目中使用它们可以正常工作。
Java中有一个类似的问题 。
尽管接受的答案没有什么错,Kotlin标准库是值得探索的,因为它包含了像substringAfterLast
这样的很好的小方法,这将缩短这个例子
val string = "hello@world.com" val domain: String? = string.substringAfterLast("@")