gpt4 book ai didi

ruby - 有没有办法使用 gsub 替换字符串中的一系列字符?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:48 25 4
gpt4 key购买 nike

我想用“#”替换除最后 4 个字符之外的所有字符...就像您在信用卡对帐单上看到的那样。我已经使用 Array#each 方法遍历索引 [0..-4] 和另一个索引 [-4..-1] 并将两者的结果铲到一个新字符串中来完成此操作。我在想也许这可以用正则表达式更好地完成?但我是正则表达式的新手,谷歌还没有找到任何我可以使用的关于替换整个范围而不丢失字符串长度的东西。我试过了

str.gsub(str[0..-5],'#')

(以及其他一些东西)但它用单个字符替换了整个范围。如何使用正则表达式实现我的目标?

最佳答案

是的,这可以通过正则表达式实现。

> "12345678".gsub(/.(?=.{4})/, "#")
=> "####5678"
> "12345678901234".gsub(/.(?=.{4})/, "#")
=> "##########1234"

解释:

.(?=.{4}) 仅匹配后跟至少四个字符的字符。所以它匹配除最后四个字符之外的所有字符,因为从最后一个字符开始,第四个字符后面跟着 3 个字符而不是 4 个字符。所以它无法匹配从最后一个字符开始的第 4 个字符。同样对于第 3、2、1 个字符(从最后一个)。

> "12345678901234".gsub(/(?!.{1,4}$)./, "#")
=> "##########1234"

DEMO

关于ruby - 有没有办法使用 gsub 替换字符串中的一系列字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com