我想跳过Kotlin中字符串开头的文本,例如Java Scanner.skip()
请告诉我如何执行string.skip("**")
之类的操作,以便在**
开始时跳过string
例如"**hello stack".skip("**") --> "hello stack"
答案 0 :(得分:1)
编辑:我没有意识到你只想在开始,只需使用removePrefix
:
"**hello stack".removePrefix("**") // "hello stack"
如果此char序列以给定前缀开头,则返回一个前缀已删除的新char序列。否则,返回具有相同字符的新char序列 <子> 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"
答案 1 :(得分:0)
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
答案 2 :(得分:-1)
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&amp; https://kotlinlang.org/docs/reference/inline-functions.html