誰もこれを疑問に思う?分割SPACE( "") kotlinで機能していません。異なる正規表現コードで試しましたが、まったく機能していません。
これで試してみました:
value.split("\\s")[0];
value.split("\\s+")[0];
value.split("\\s++")[0];
その後、私は解決策を考え出しました-> Create Javaこの関数を含み、kotlinクラスに文字列配列を返す定数クラス。
この問題を直接解決できる他の解決策はありますか?
解決策: @Edson Menegattiが言ったように:
KOTLIN固有:WORKING
values.split("\\s".toRegex())[0]
多くの人々がこの解決策を提案しました:NOT WORKING
values.split(" ")[0]
しかし、私の場合は動作していませんです。
JavaとKotlin実装の_String.split
_の間の問題です。
Java実装は正規表現文字列を受け入れますが、Kotlinのものは受け入れません。それが機能するためには、実際のRegex
オブジェクトを提供する必要があります。
そのためには、次のようにコードを更新します。
_value.split("\\s".toRegex())[0];
_
また、@ Thomasが示唆したように、通常のスペース文字を使用して文字列を次のように分割できます。
_value.split(" ")[0];
_
最後に、分割リストの最初の要素のみを使用している場合は、_[0]
_の代わりにfirst()
を使用することを検討することをお勧めします。パフォーマンスを向上させます。
あなたが使用する必要があります:
.toRegex()
_fun main(args: Array<String>) {
val str = "Kotlin com"
val separate1 = str.split("\\s".toRegex())[0]
println(separate1) // ------------------> Kotlin
}
_
[〜#〜] or [〜#〜]
.split(" ")[0]
を使用して結果を達成することもできます。お気に入り
_fun main(args: Array<String>) {
val str = "Kotlin com"
val separate1 = str.split(" ")[0]
println(separate1) // ----------> Kotlin
}
_
String#split
(実際にはCharSequence#split
)は、正規表現、または文字通り解釈される文字列のいずれかを取ることができます。そう:
value.split(" ")[0]
あなたがしたいことをします。
最初の要素のみを使用している場合は、limit = 2
も渡す方が効率的です。または、さらに良いことに substringBefore
を使用します。
Kotlinは、JavaのString
ライブラリにあるいくつかの問題を解決しようとします。たとえば、Kotlinはより明示的にしようとします。
その結果、 split
メソッドは通常のString
を受け取り、内部的に正規表現として使用しません。
_"hello world".split("\\s")[0] //no match
"hello world".split(" ")[0] // => "hello"
_
実際に正規表現を取るオーバーロードされたsplit
関数を明示的に使用するには、toRegex()
拡張を使用できます(inline fun String.toRegex(): Regex (source)
):
_"hello world".split("\\s".toRegex())[0]// => "hello"
_
以下は、混乱する_String::replaceAll
_メソッドを解決するKotlinの別の例を示しています。
KotlinConf Svetlana Isakovaのプレゼンテーション から取られた、「Kotlin in Action」の共著者