我想跳过 Kotlin 中字符串开头的文本,就像 Java Scanner.skip()
请告诉我如何做一些类似的事情,例如string.skip("**")
在string
开始时跳过**
例如"**hello stack".skip("**") --> "hello stack"
编辑:我没有意识到你一开始就想要它,只需使用 removePrefix
:
"**hello stack".removePrefix("**") // "hello stack"
如果此字符序列以给定前缀开头,则返回删除前缀的新字符序列。否则,返回具有相同字符的新字符序列。
kotlin.text.removePrefix
我想跳过字符串开头的文本
您可以使用substringAfter
:
"**hello stack".substringAfter("**") // "hello stack"
在第一次出现
delimiter
之后返回一个子字符串。如果字符串不包含分隔符,则返回默认为原始字符串的missingDelimiterValue
。
kotlin.text.substringAfter
当给定的分隔符不存在时,substringAfter
将只返回 missingDelimiterValue
,默认情况下是原始字符串:
"foo".substringAfter("**") // "foo"
"foo".substringAfter("**", "no match") // "no match"
var data = "**hi dhl**"
println(data.removePrefix("**")) // hi dhl**
println(data.removeSuffix("**")) // **hi dhl
println(data.removeSurrounding("**")) // hi dhl
println(data.substringAfter("**")) // hi dhl**
println(data.substringAfter("--")) // **hi dhl**
println(data.substringAfter("--","no match")) // no match
data = "{JAVA | KOTLIN | C++ | PYTHON}"
println(data.removeSurrounding("{", "}")) // JAVA | KOTLIN | C++ | PYTHON
Kotlin 在设计时完全考虑了互操作性。您可以使用所有 Java 类,包括 Scanner。
你想要实现的是创建扩展函数
这只是低效的草稿。但您可以根据需要进行优化。
fun String.skip(pattern: String): String {
val scanner = Scanner(this)
//scanner opeations
return scanner.nextLine()
}
看看这里: https://kotlinlang.org/docs/reference/extensions.html &https://kotlinlang.org/docs/reference/inline-functions.html