Ruby单行正则表达式用“*”替换每个字符\ d?

时间:2011-01-05 04:12:50

标签: ruby regex

只要符合条件,如何用另一个角色将每个角色替换为某个角色?

string = "401200******7777"

string.gsub!(/^\d+/) { |m| "*" * m.length }

puts string
# ************7777

有更简单/更好的方法吗?

2 个答案:

答案 0 :(得分:1)

现在不能尝试,但这应该可以解决问题:

string.gsub!(/(\d)(?=.*\*)/, '*')

答案 1 :(得分:0)

嗯...我现在发明的唯一方法是使用标志变量+两个正则表达式

string = "401200******7777"
flag = true
string.gsub!(/./) { |i| (flag &&= i[/\d/]) ? "*" : i}

但它不是 oneliner ...