过滤kotlin中的子字符串

Ada*_*hes 5 kotlin

kotlin我想过滤一个字符串并返回只有有效字符的子字符串.假设我们有有效的角色,

valid = listOf('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)

如何fcn以最简洁的方式定义kotlin以过滤字符串并仅保留有效字符?例如,

'ABCDEBCA' --> 'ABCBCA'
'AEDC'     --> 'AC'
Run Code Online (Sandbox Code Playgroud)

无需使用字符串数组就无法找到规范的方法来执行此操作.

import kotlin.text.filter

class Test(){
    val VALID = listOf("A", "B", "C")

    fun filterString(expression: String): String{
         expression.filter(x --> !VALID.contains(x)) #Doesn't work
    }
}
Run Code Online (Sandbox Code Playgroud)

过滤器文档不显示出任何实施例中具体为弹簧操作.

JB *_*zet 6

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
Run Code Online (Sandbox Code Playgroud)

要么

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
}
Run Code Online (Sandbox Code Playgroud)