只要符合条件,如何用另一个角色将每个角色替换为某个角色?
string = "401200******7777"
string.gsub!(/^\d+/) { |m| "*" * m.length }
puts string
# ************7777
有更简单/更好的方法吗?
答案 0 :(得分:1)
现在不能尝试,但这应该可以解决问题:
string.gsub!(/(\d)(?=.*\*)/, '*')
答案 1 :(得分:0)
嗯...我现在发明的唯一方法是使用标志变量+两个正则表达式:
string = "401200******7777"
flag = true
string.gsub!(/./) { |i| (flag &&= i[/\d/]) ? "*" : i}
但它不是 oneliner ...