字符串开头的跳过模式

时间:2018-03-16 08:49:52

标签: kotlin

我想跳过Kotlin中字符串开头的文本,例如Java Scanner.skip()

请告诉我如何执行string.skip("**")之类的操作,以便在**开始时跳过string 例如"**hello stack".skip("**") --> "hello stack"

3 个答案:

答案 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