如何在Kotlin中将String句子转换为arraylist

jan*_*sad 3 kotlin

我有这个函数将字符串句子转换为列表单词.我在Java中创建了这个函数,并在Android Studio中使用默认的Kotlin转换转换为Kotlin,但我相信在Awesome Kotlin中有很多方法可以缩短这些代码.如果你能分享你的代码并帮助我(以及所有)改善我们在Kotlin的知识,我会很高兴.

private fun stringToWords(mnemonic: String): List<String> {
    val words = ArrayList<String>()
    for (word in mnemonic.trim { it <= ' ' }.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) {
        if (word.isNotEmpty()) {
            words.add(word)
        }
    }
    return words
}
Run Code Online (Sandbox Code Playgroud)

Rol*_*and 6

我会选择以下内容:

fun stringToWords(s : String) = s.trim().splitToSequence(' ')
    .filter { it.isNotEmpty() } // or: .filter { it.isNotBlank() }
    .toList()
Run Code Online (Sandbox Code Playgroud)

请注意,您可能希望调整该过滤器,例如过滤掉空白条目...我将该变体放在注释中...(如果您使用该变体,则不需要初始值trim())

如果您更愿意与之合作,Sequence您可以通过省略.toList()最后的方式来实现.

正如Abdul-Aziz-Niazi所说:如果你需要更频繁的话,通过扩展功能也可以这样做:

fun String.toWords() = trim().splitToSequence(' ').filter { it.isNotEmpty() }.toList()
Run Code Online (Sandbox Code Playgroud)