我喜欢写Ruby的一个原因是,它为程序员的快乐而优化。Ruby社区重视代码的可读性。
来自其他生态系统的程序员经常对Ruby看起来像伪代码感到震惊。在标准库和像ActiveSupport 这样的扩展之间,使用Ruby意味着你可以以一种自然的方式编写代码。
一个很好的例子是字符串方法delete_prefix 和delete_suffix 。
使用方法
你可以使用delete_prefix ,就像它的名字一样,从一个字符串的开头删除一个子串:
"BoringRails!".delete_prefix("Boring")
#=> "Rails!"
"#programming".delete_prefix("#")
#=> "programming"
"ISBN: 9780091929787".delete_prefix("ISBN: ")
#=> "9780091929787"
"mailto:test@example.com".delete_prefix("mailto:")
#=> "test@example.com"
github_url = "https://github.com/rails/rails"
repo_name = github_url.delete_prefix("https://github.com/")
#=> "rails/rails"
将此方法与其他选项进行比较,如gsub :
github_url = "https://github.com/rails/rails"
repo_name = github_url.gsub("https://github.com/", "")
#=> "rails/rails"
虽然gsub 更加灵活(它可以接受一个Regex并交换多个出现),但是代码读起来没有delete_prefix 那么自然。而且,delete_prefix 的性能更强!
如果你想删除一个字符串末尾的字符,你有两个主要的选择:chomp 和delete_suffix :
"report.csv".chomp(".csv")
#=> "report"
"report.csv".delete_suffix(".csv")
#=> "report"
"150 cm".delete_suffix("cm").to_i
#=> 150
从风格上看,chomp 有更多的奇思妙想,这是你可能期望从Ruby中得到的,而delete_suffix 是对delete_prefix 的一个很好的镜像,而且命名更明确。两者都有类似的性能基准,并且比sub 更快。