在字符串开头跳过模式



我想跳过 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