2017-02-14 11 views
0

kotlin文字列をフィルタリングし、有効な文字のみの部分文字列を返したいと思います。我々は有効な文字を持っていると言う、kotlinの部分文字列をフィルタリングする

valid = listOf('A', 'B', 'C') 

は、どのように私は、文字列をフィルタリングし、有効な文字のみを保持するための最も簡潔な方法でkotlinでfcnを定義することができますか?たとえば、

'ABCDEBCA' --> 'ABCBCA' 
'AEDC'  --> 'AC' 

文字列の配列を使用せずに標準的な方法を見つけるのに問題があります。

filter docsには、具体的には春の操作の例は示されていません。

+0

私は、この質問は-1にした理由はわかりませんupvoteを持っています。 – fred

答えて

1
val VALID = setOf('A', 'B', 'C') // lookup in a set is O(1), whereas it's O(n) in a list. The set must contain Chars, not Strings 
val expression = "ABCDEFEDCBA" 
val filtered = expression.filter { VALID.contains(it) } 
println(filtered) 
// ABCCBA 

それとも

val VALID = setOf('A', 'B', 'C') 

fun filterString(expression: String) = expression.filter { it in VALID } 

fun main(args: Array<String>) { 
    val expression = "ABCDEFEDCBA" 
    val filtered = filterString(expression) 
    println(filtered) 
    // ABCCBA 
} 
+0

ありがとうございます。私の問題の一部も文字を使用していませんでした。私の有効なdelcarationでは '('の代わりにIE "("。 –

関連する問題