如何删除从Ruby中的某些字符开始的字符串



我在数组中显示以下模式的字符串:

"@SomeUselessText"

在此示例中,我想摆脱以"@"字符开始的数组中的所有字符串。

这就是我到目前为止提出的:

def array_purge(array)
  for array.each |item|
    item = item.gsub(/@.*/, "")
  end
end

但是,这也摆脱了表格的有效电子邮件地址:

"info@SomeSite.com"

...我想保留。

我猜想有一种优雅的处理方式。也许使用" .-拒绝!"

其他建议的答案实际上并未从数组中清除目标项目;他们只是用空字符串代替项目。您更有可能想要:

def array_purge(array)
  array.reject! { |item| item.start_with?('@') }
end
>> array = ['Hello', '123', '@SomeUselessText', 'info@SomeSite.com']
>> array_purge(array)
=> ["Hello", "123", "info@SomeSite.com"]

您可以在此处使用Enumerable#grep_v

array = ['Hello', '123', '@SomeUselessText', 'info@SomeSite.com']
array.grep_v(/A@/)
 #=> ["Hello", "123", "info@SomeSite.com"]

检查是否有whitespace( s(或是否是字符串的开始( ^(。

(?:s|^)@.*

live demo

如果您只想匹配单词字符,则可以使用w而不是使用CC_5。另请注意,*仍然只匹配"@",因此您可能需要使用+而不是与至少一个字符匹配。

(?:s|^)@w+

实时演示

使用以下正则表达式[line]而不是: a.gsub(/^@.*/, "")

^的意思是"从行的开头" ...因此,它仅在有行的开始时匹配,然后下一个字符是 @

相关内容

  • 没有找到相关文章

最新更新