Ruby 删除以特定字符开头的所有子字符串

标签 ruby gsub

我想从字符串中删除以井号开头并以空格结尾或位于字符串末尾的所有子字符串。我有一个可行的解决方案,但我想知道是否有更有效(或同样有效但不那么冗长)的方法。

比如我要取"leo is #confused about #ruby #gsub"并把它变成"#confused #ruby #gsub" .

这是我目前的解决方案,其中涉及数组和减法。

strip_spaces = str.gsub(/\s+/, ' ').strip()
  => "leo is #confused about #ruby #gsub"
all_strings = strip_spaces.split(" ").to_a
  => ["leo", "is", "#confused", "about", "#ruby", "#gsub"]
non_hashtag_strings = strip_spaces.gsub(/(?:#(\w+))/) {""}.split(" ").to_a
  => ["leo", "is", "about"]
hashtag_strings = (all_strings - non_hashtag_strings).join(" ")
  => "#confused #ruby #gsub"

老实说,既然我写完了这个问题,我通过研究/实验学到了一些东西,并且对这种数组方法更加熟悉。但我仍然想知道是否有人可以建议改进。

最佳答案

我会做这样的事情:

string = "leo is #confused about #ruby #gsub"
#=> "leo is #confused about #ruby #gsub"
string.split.select { |word| word.start_with?('#') }.join(' ')
#=> "#confused #ruby #gsub"

关于Ruby 删除以特定字符开头的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41680712/

相关文章:

从超过一定长度的数字中删除最后一位数字

ruby - 为什么 DataMapper 对象和集合上的 `to_json` 会导致无限查询?

ruby - 有没有办法知道一个方法需要多少个参数?

ruby-on-rails - ruby on rails 中的 "_path"方法是什么?

bash - 根据不同的 gsub 条件同时 gsub 多列?

ruby - 如何在 ruby​​ 中用转义单引号替换单引号

r - 使用gsub替换字符,如何创建函数?

ruby-on-rails - 如何在 Rails 中更快地实现昂贵的功能?

javascript - phraseapp 和 rails 5 加载 Assets

ruby - 使用 gsub 或 sub 替换一个字符