首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中删除某些单词,但前提是它们出现在字符串的末尾?

如何从字符串中删除某些单词,但前提是它们出现在字符串的末尾?
EN

Stack Overflow用户
提问于 2013-11-07 19:44:25
回答 4查看 1.5K关注 0票数 3

我有像“米勒德集团”和“烟囱公司”这样的公司名称。我想删除“集团”或“公司”这样的词,但前提是它们出现在单词的末尾。也就是说,如果它们出现在中间的某个地方,我不想把它们移走。

我怎样才能在Ruby中做到这一点呢?gsub将从任何位置替换字符串,而且我有一个大约10的列表,所以我宁愿不运行gsub 10次。如果我能提供一组要删除的单词,那就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-07 19:46:39

试着做这样的事情:

代码语言:javascript
复制
['The Millard Group', 'The Chimney Corporation'].each do |s|
  s.gsub!(/\ (Group|Corporation)$/, '')
end

可以在正则表达式中添加更多的单词,方法是在更多的|之后添加它们

票数 5
EN

Stack Overflow用户

发布于 2013-11-07 20:18:04

因为并不是所有的事情都需要用gsub和regexp解决:

代码语言:javascript
复制
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"]

编辑:也许这个版本会更快一点?

代码语言:javascript
复制
corporations.map! do |corp|
  last_word = (corp.rindex(' ')+1)..-1
  corp.slice!(last_word) if endings.include?(corp[last_word])
  corp.rstrip
end
票数 2
EN

Stack Overflow用户

发布于 2013-11-07 19:50:26

使用下列公约:

用于白空间/新行等的\s

$表示行尾。^表示行的开头。

现在在正则表达式中使用这个:

代码语言:javascript
复制
/\s*(Group|Corporation)$/

这将在您给定的String的末尾找到集团或公司,并用您想要的任何东西替换它。

代码语言:javascript
复制
'The Chimney Corporation'.gsub!(/\s*(Group|Corporation)$/,'')
#=>"The Chimney"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19845172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档