如何使用`delete_prefix'和`delete_suffix'进行超级可读的字符串操作

103 阅读1分钟

我喜欢写Ruby的一个原因是,它为程序员的快乐而优化。Ruby社区重视代码的可读性。

来自其他生态系统的程序员经常对Ruby看起来像伪代码感到震惊。在标准库和像ActiveSupport 这样的扩展之间,使用Ruby意味着你可以以一种自然的方式编写代码。

一个很好的例子是字符串方法delete_prefixdelete_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性能更强

如果你想删除一个字符串末尾的字符,你有两个主要的选择:chompdelete_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 更快。