Android 从Kotlin中的字符串列表中删除单词
我有一个可变的字符串列表,我试图从每个字符串中删除一个单词。问题是我不相信每一行都会删除这个词Android 从Kotlin中的字符串列表中删除单词,android,kotlin,Android,Kotlin,我有一个可变的字符串列表,我试图从每个字符串中删除一个单词。问题是我不相信每一行都会删除这个词 for (item in stringLines) { when { item.contains("SUMMARY") -> eventLines.add(item) item.contains("DTSTART") -> startDateLines.add(item) item.cont
for (item in stringLines) {
when {
item.contains("SUMMARY") -> eventLines.add(item)
item.contains("DTSTART") -> startDateLines.add(item)
item.contains("DTEND") -> endDateLines.add(item)
//item.contains("URL:") -> locationLines.add(item)
//item.contains("CATEGORIES") -> categoriesLines.add(item)
}
}
for (item in eventLines) {
when{
item.contains("SUMMARY") -> item.removePrefix("SUMMARY")
}
}
字符串是
SUMMARY WINTER FORMAL
我需要
WINTER FORMAL
但不管什么原因,它都没有出现。我知道如何在java中做到这一点,但我不知道如何在Kotlin中做到这一点,我找不到任何能够实现这一点的函数。我缺少什么?
removePrefix
仅当字符串的特定部分是前缀时才删除该部分。显然,这不是你的情况。您可以执行拆分
,筛选
,加入
序列以产生预期结果
println("SUMMARY WINTER FORMAL".split(" ").filter { it != "SUMMARY" }.joinToString(" "))
//output : "WINTER FORMAL"
但是如果有多个连续的空间,它们将成为输出中的一个空间。此外,如果“SUMMARY”没有被空格包围,例如“SUMMARYWINTERFORMAL”不会更改,则此方法也不起作用
您可以通过用空字符串替换来删除字符串的一部分,但请注意,这将保留任何周围的字符,包括周围的空格
println("SUMMARY WINTER FORMAL".replace("SUMMARY",""))
//output : " WINTER FORMAL"
请注意,“WINTER”前面有一个空格
如果不希望包含空格(如果有),则使用正则表达式即可:
println("SUMMARY WINTER FORMAL".replace("\\s*SUMMARY\\s*".toRegex(),""))
//output : "WINTER FORMAL"
println("SUMMARYWINTERFORMAL".replace("\\s*SUMMARY\\s*".toRegex(),""))
//output : "WINTERFORMAL"
println(" SUMMARY WINTER FORMAL".replace("\\s*SUMMARY\\s*".toRegex(),""))
//output : "WINTER FORMAL"
您可以进一步修改正则表达式以更好地适应您的用例。Kotlin(和Java)中的字符串是不可变的。因此item.removePrefix
返回一个新字符串,您必须更新列表或创建如下新列表:
for (item in eventLines) {
when {
item.contains("SUMMARY") ->
eventLinesWithPrefixRemoved.add(item.removePrefix("SUMMARY"))
else -> eventLinesWithPrefixRemoved.add(item)
}
}
如果只想从字符串中删除“SUMMARY”,可以使用这种情况
val l = listOf("SUMMARY WINTER FORMAL", "SUMMARY FORMAL", "WINTER FORMAL", "SUMMARY WINTER")
println(
l.map {
it.split(" ")
.filter { s -> s != "SUMMARY" }
.joinToString(" ")
}
) // puts [WINTER FORMAL, FORMAL, WINTER FORMAL, WINTER]
下面是一个提示,供将来使用,用java编写代码并粘贴到android studio中,它会要求将其转换为kotlin,只需按yes。它在大多数情况下适用于小代码块。我不知道它们不能更改,谢谢!