我有以下代码,它应该从字符串中删除特定的电子邮件地址(如果存在)。问题是我在字符串音译(ArgumentError)中得到错误“无效范围”y-d“我认为这是因为它将我的输入视为正则表达式。我需要通过实际代码中的变量来删除,而不是字符串文字,但这是问题的简化版本。
那么我该如何正确执行此操作呢?
myvar = "test1@my-domain.com test2@my-domain.com"
myvar = myvar.delete("test1@my-domain.com")
答案 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, "")