改变“bob @ ???。???”的最好方法使用Ruby“bob@something.com”?

时间:2009-11-20 14:21:03

标签: ruby regex

这样做的最佳方式是什么:

mail = "bob@something.com"
mail2 = mail.do_magic
# puts mail2 will return "bob@anotherwebsite.com"

我正在考虑正则表达式,但是还有另一种很酷的方式吗?如果没有,我应该如何使用regexp?

3 个答案:

答案 0 :(得分:3)

不确定我完全明白你在问什么,但你不能像这样使用正则表达式吗?

irb(main):001:0> email = "bob@example.com"
=> "bob@example.com"
irb(main):002:0> email.gsub(/@[\w.]+/, '@something.com')
=> "bob@something.com"

让我知道我错过了什么,或者我是不是正确地理解了这个问题。

答案 1 :(得分:1)

您也可以在字符串索引中使用regexp:

email = "bob@example.com"
replace = "foobar.invalid"
email[/@.*/] = "@#{replace}"

如果您不想修改email

(new = email.dup)[/@.*/] = "@#{replace}"
p [email,new]  # => ["bob@example.com", "bob@foobar.invalid"]

答案 2 :(得分:0)

避免使用正则表达式的另一种方法是拆分和连接

new = [email.split('@').first, "foobar.invalid"].join('@')