Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-如何删除字符串中具有特定模式的所有单词_Ruby - Fatal编程技术网

Ruby-如何删除字符串中具有特定模式的所有单词

Ruby-如何删除字符串中具有特定模式的所有单词,ruby,Ruby,例如,字符串是“我今天很高兴”。我想删除所有包含字母“a”的单词。因此,输出应该是“I very”。我该怎么做呢?您可以尝试拆分每个单词,删除带有字母“a”的单词,然后将这些单词连接在一起,如下所示: "I am very happy today".split.reject{ |word| word.include?("a") }.join(" ") 与@Sam的答案类似,只有较小的:)使用鲜为人知的 #grep的反向版本。返回枚举中非模式==元素的每个元素的数组 下面是一个使用正则表达式的示

例如,字符串是“我今天很高兴”。我想删除所有包含字母“a”的单词。因此,输出应该是“I very”。我该怎么做呢?

您可以尝试拆分每个单词,删除带有字母“a”的单词,然后将这些单词连接在一起,如下所示:

"I am very happy today".split.reject{ |word| word.include?("a") }.join(" ")

与@Sam的答案类似,只有较小的:)使用鲜为人知的

#grep的反向版本。返回枚举中非模式==元素的每个元素的数组


下面是一个使用正则表达式的示例:

  • 词界
  • 字母数字字符
  • a
  • 字母数字字符
  • 词界
然后,您需要删除不需要的空格

"I am very happy today".gsub(/\b\w*a\w*\b/i, '').strip.gsub(/\s+/, ' ')

不过,
split
join
的答案更清晰。

我预见到@mudasobwa会出现,并发布一个带有负面外观的聪明正则表达式解决方案,或者其他东西。:)你是如此的好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!帮我很多忙!!!!!!!!!!你应该说你是否想在要保留的单词之间保留额外的空格。例如,假设,
str=“I_am\u very\uuu\uu grouchy\u today”
,其中空格由下划线表示(因此在注释中去掉额外的空格)。你想回答“我非常不高兴”还是“我非常不高兴”,你看到了我的问题,但选择不回答。为什么?非常感谢您的回复^ ^谢谢您的解决方案^_^
"I am very happy today".gsub(/\b\w*a\w*\b/i, '').strip.gsub(/\s+/, ' ')