从Ruby中的字符串中删除电子邮件地址

时间:2011-11-24 14:07:54

标签: ruby string

我有以下代码,它应该从字符串中删除特定的电子邮件地址(如果存在)。问题是我在字符串音译(ArgumentError)中得到错误“无效范围”y-d“我认为这是因为它将我的输入视为正则表达式。我需要通过实际代码中的变量来删除,而不是字符串文字,但这是问题的简化版本。

那么我该如何正确执行此操作呢?

myvar = "test1@my-domain.com test2@my-domain.com"
myvar = myvar.delete("test1@my-domain.com")

3 个答案:

答案 0 :(得分:7)

尝试

myvar = "test1@my-domain.com test2@my-domain.com"
myvar = myvar.gsub("test1@my-domain.com", '').strip

答案 1 :(得分:2)

String#delete(str)不会删除文字字符串str,而是使用str的单个字符构建一个集合,并删除所有这些字符。试试这个:

"sets".delete("test")
=> ""

"sets".delete("est")
=> ""

连字符具有特殊含义,它定义了一系列字符。 String#delete("a-d")将删除所有出现的a,b,c和d字符。范围边界字符应按升序给出:您应该写"a-d"而不是"d-a"

在您的原始示例中,ruby尝试从y-d子字符串构建字符范围并失败。

请改用String#gsub方法。

答案 2 :(得分:0)

你可以这样做

myvar = "test1@my-domain.com test2@my-domain.com"
remove = "test1@my-domain.com"
myvar.gsub!(remove, "")