You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中实现类似Java Scanner.skip()的字符串开头跳过功能

在Kotlin中实现类似Java Scanner.skip()的字符串前缀跳过功能

嘿,这个需求在Kotlin里其实有好几种简洁又好用的实现方式,我给你梳理几个常用的:

1. 直接用内置的removePrefix方法(最推荐)

Kotlin的字符串类本身就提供了专门移除开头指定前缀的方法,完全符合你的需求,写法超简单:

val originalStr = "**hello stack"
val processedStr = originalStr.removePrefix("**")
println(processedStr) // 输出:hello stack

这个方法很贴心——如果原字符串开头并不是你指定的前缀,它会直接返回原字符串,不会抛出异常,安全性拉满。

2. 用正则表达式的replaceFirst(适合灵活匹配场景)

如果你需要跳过的前缀是某种模式(比如开头任意数量的星号),而不是固定字符串,正则表达式就派上用场了:

val originalStr = "**hello stack"
// 匹配开头的两个星号并替换为空
val processedStr = originalStr.replaceFirst("^\\*\\*", "")
println(processedStr) // 输出:hello stack

要是你想跳过开头所有的星号(不管有几个),只需要把正则改成^\\*+就行,是不是很灵活?

3. 自定义扩展函数skip(贴合你的直观写法)

如果你就想让字符串直接调用skip("**")这种方法,完全可以自己写个扩展函数,让用法更贴合你的预期:

// 给String类扩展一个skip方法
fun String.skip(prefix: String): String {
    return if (this.startsWith(prefix)) {
        this.substring(prefix.length)
    } else {
        this // 前缀不匹配时返回原字符串
    }
}

// 调用方式和你想要的一模一样
val originalStr = "**hello stack"
val processedStr = originalStr.skip("**")
println(processedStr) // 输出:hello stack

这个扩展函数的逻辑和removePrefix其实差不多,但名字更符合你想要的skip语义,用起来更顺手。


内容的提问来源于stack exchange,提问作者Joe Qstc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:09:22