Let's say that we have a string Projects::CategoriesController and we want to remove Controller. We can use chomp method.
1irb> "Projects::CategoriesController".chomp("Controller") 2=> "Projects::Categories"
However if we want to remove Projects:: from the string then there is no corresponding method of chomp. We need to resort to sub.
1irb> "Projects::CategoriesController".sub(/Projects::/, '') 2=> "CategoriesController"
Naotoshi Seo did not like using regular expression for such a simple task. He proposed that Ruby should have a method for taking care of such tasks.
Some of the names proposed were remove_prefix, deprefix, lchomp, remove_prefix and head_chomp.
Matz suggested the name delete_prefix and this method was born.
1irb> "Projects::CategoriesController".delete_prefix("Projects::") 2=> "CategoriesController"
Now in order to delete prefix we can use delete_prefix and to delete suffix we could use chomp. This did not feel right. So for symmetry delete_suffix was added.
1irb> "Projects::CategoriesController".delete_suffix("Controller") 2=> "Projects::Categories"
Read up on this discussion to learn more about how elixir, go, python, and PHP deal with similar requirements.