regex - 按换行符分割 - 如果没有匹配项,则返回包含原始字符串的数组
问题描述
我最近发现String#split
如果找不到匹配项,该方法会返回一个包含原始字符串的单元素数组:
"azerty keyboard".split(/\n/)
=> ["azerty keyboard"]
"azerty keyboard".split(',')
=> ["azerty keyboard"]
如果没有找到匹配项,不拆分的解决方案是什么?只需使用:
if "azerty keyboard".match(/\n/)
...# split here
end
还是有更好的方法?
解决方案
由于我们正在使用 Ruby,您可以打开String
该类并创建一个按您期望的方式工作的新函数:
class String
def split_if(matches)
match(matches) ? split(matches) : self
end
end
然后会返回:
"azerty keyboard".split_if(/\n/)
=> "azerty keyboard"
"azerty keyboard".split_if(' ')
=> ["azerty", "keyboard"]
尽管请记住,仅仅因为我们可以,并不总是意味着我们应该。有些人认为开放课程是一个很大的禁忌。那么你应该这样做吗?这取决于您、您的团队和您的应用程序的需求。
推荐阅读
- jira - 有没有办法将 JIRA 问题散列到固定数量的桶中?
- css - Rails Turbolinks:没有这样的文件或目录@ rb_sysopen
- c# - API 未以所需格式返回 JSON 数据
- node.js - discordjs 如何按名称而不是 id 获取角色
- python - 使用 Python 的 PyMem 函数时释放的内存
- google-apps-script - Google表格脚本:范围内单元格的setValue
- node.js - 如何在我的实时 ubuntu 服务器上更新节点和 npm?
- python - 我可以使用 Python 从其中一个值中获取 JSON 模式的名称吗?
- firefox-addon - 替换缩略图和主题切换
- amazon-web-services - 如何使用 Azure DevOps/Pipeline/Release 中“AWS Secrets Manager-Get Secret”中的 AWS 插件从一个密钥中仅获取一个秘密值