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

如何查找给定字符串中子串的最后一次出现?解决结尾子串替换问题

解决方案

1. 仅替换字符串结尾的"jk"为"sd"

别用gsub!(它会替换所有匹配的"jk"),改用sub!配合匹配字符串结尾的正则表达式,精准替换末尾的目标子串:

# 示例字符串
str = "lazer<strong>jk</strong>"
# 仅当"jk"在字符串结尾时替换为"sd"
str.sub!(/jk\z/, "sd")
# 输出结果:"lazer<strong>sd</strong>"

这里的\z是正则锚点,专门匹配整个字符串的最后位置,确保只有当"jk"是字符串的最后两个字符时才会被替换。如果字符串结尾不是"jk",sub!会返回nil,不会修改原字符串。

如果你的实际需求是替换特定标签内的"jk"(比如示例中的<strong>标签),可以调整正则表达式来匹配标签内的结尾:

str.sub!(/(<strong>)jk(<\/strong>)\z/, '\1sd\2')

2. 查找子串的最后一次出现

使用Ruby内置的String#rindex方法,直接获取子串最后一次出现的起始索引:

str = "testjk123jkxyz"
# 获取最后一个"jk"的起始索引
last_occurrence_index = str.rindex("jk")
# 输出:8(因为最后一个"jk"从索引8开始)

如果子串不存在于字符串中,rindex会返回nil。你还可以指定搜索的起始位置,比如从索引5往前查找:

str.rindex("jk", 5) # 返回4,对应第一个"jk"的起始索引

内容的提问来源于stack exchange,提问作者NOVA PC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:30:40