ruby - 识别包含列表中每个字符的字符串
问题描述
我有话"dinosaur", "dosimetry", and "moist"
。我在想我有几十万字的情况。我想返回包含"s", "i", "o", "m"
字符串中任何位置的所有单词。该函数应该返回"dosimetry", "moist"
。
有没有一种有效的方法来做到这一点,还是我必须迭代和检查?
解决方案
只为体验
使用正则表达式积极前瞻
words = %w(dinosaur dosimetry moist)
words.select { |word| word.match?(/(?=.*m)(?=.*s)(?=.*i)(?=.*o).*/) }
#=> ["dosimetry", "moist"]
为了提高搜索速度,我按照英文字母频率排列了正则表达式中的字母。
推荐阅读
- notepad++ - 在 Notepad++ 中自定义上下文菜单
- php - PHP Regex - 删除二级域
- java - 为什么我的 Java 范围滑块不能同时滑动两个拇指?
- arrays - 将多个数组合并/合并为一个
- ruby-on-rails - 返回包含包含的多个模型记录
- r - R Shiny - 使用谷歌验证器允许具有某种类型电子邮件地址的人登录
- react-native - 如何在 React Native ios 中暴露 ScrollView 容器之外的阴影样式?
- ios - 'subscript(_:)' 的模糊使用
- docker - 如果 docker 容器是在非 sudo 基础映像上构建的,有没有办法将 docker 容器作为 sudo 运行?
- bash - BASH 在脚本中同时使用位置参数和可选参数