メールという文字列があります。文字列/メールが何であれ、メールのドメイン部分を取得できるようにしたい。基本的に、文字列の@部分の後の文字を取得したいと思います。たとえば、testing @ kotlin.comの場合、私はkotlin.comの部分の後です。
val emailString = "[email protected]"
完全を期すために:
val string = "[email protected]"
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("[email protected]".domain)
let
を使用して、このコードを1行に短縮できます。
string.indexOf('@').let { if (it == -1) null else string.substring(it + 1) }
Ivan Woollの回答 は substringAfterLast
を使用するという意味を持ちますが、これはnull
を返すことはできません。
編集:コメントのアドレスを指定すると、できませんJavaとKotlinを同じファイルで使用します。ただし、同じプロジェクトが正常に機能します。
これが Javaでの同様の質問 です。
受け入れられた回答には何の問題もありませんが、Kotlin標準ライブラリにはsubstringAfterLast
のような素敵な小さなメソッドが含まれているため、探索する価値があります。
val string = "[email protected]"
val domain: String? = string.substringAfterLast("@")
次の式は、2番目のサブストリングが区切り文字xであることを示しています
yourText.split('x')[1]