我有像“米勒德集团”和“烟囱公司”这样的公司名称。我想删除“集团”或“公司”这样的词,但前提是它们出现在单词的末尾。也就是说,如果它们出现在中间的某个地方,我不想把它们移走。
我怎样才能在Ruby中做到这一点呢?gsub将从任何位置替换字符串,而且我有一个大约10的列表,所以我宁愿不运行gsub 10次。如果我能提供一组要删除的单词,那就太好了。
发布于 2013-11-07 19:46:39
试着做这样的事情:
['The Millard Group', 'The Chimney Corporation'].each do |s|
s.gsub!(/\ (Group|Corporation)$/, '')
end可以在正则表达式中添加更多的单词,方法是在更多的|之后添加它们
发布于 2013-11-07 20:18:04
因为并不是所有的事情都需要用gsub和regexp解决:
endings = [' Group', ' Corporation']
corporations = ["The Millard Group", "The Chimney Corporation"]
corporations.each do |corp|
endings.each{|ending| corp.chomp!(ending)}
end
p corporations #=> ["The Millard", "The Chimney"]编辑:也许这个版本会更快一点?
corporations.map! do |corp|
last_word = (corp.rindex(' ')+1)..-1
corp.slice!(last_word) if endings.include?(corp[last_word])
corp.rstrip
end发布于 2013-11-07 19:50:26
使用下列公约:
用于白空间/新行等的\s。
$表示行尾。^表示行的开头。
现在在正则表达式中使用这个:
/\s*(Group|Corporation)$/这将在您给定的String的末尾找到集团或公司,并用您想要的任何东西替换它。
'The Chimney Corporation'.gsub!(/\s*(Group|Corporation)$/,'')
#=>"The Chimney"https://stackoverflow.com/questions/19845172
复制相似问题