mirror of
https://github.com/jbranchaud/til
synced 2026-01-07 00:58:02 +00:00
Add the Limit Split til to the ruby directory.
This commit is contained in:
37
ruby/limit-split.md
Normal file
37
ruby/limit-split.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Limit Split
|
||||||
|
|
||||||
|
I've only ever used Ruby's
|
||||||
|
[`String#split`](http://ruby-doc.org//core-2.2.0/String.html#method-i-split)
|
||||||
|
with the delimiter argument (e.g. `"this string has spaces".split(" ")`).
|
||||||
|
This method has another argument that can be specified, the `limit`
|
||||||
|
argument. With `limit`, you can *limit* the number of times that the split
|
||||||
|
happens.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
"this string has many spaces".split(" ")
|
||||||
|
# => ["this", "string", "has", "many", "spaces"]
|
||||||
|
"this string has many spaces".split(" ", 3)
|
||||||
|
# => ["this", "string", "has many spaces"]
|
||||||
|
```
|
||||||
|
|
||||||
|
There are surely many use cases, but one that stands out (from [The Rails 4
|
||||||
|
Way](https://leanpub.com/tr4w)) is for splitting a name into *first* and
|
||||||
|
*last* names.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
"Josh Branchaud".split(" ", 2)
|
||||||
|
# => ["Josh", "Branchaud"]
|
||||||
|
"David Heinemeier Hansson".split(" ", 2)
|
||||||
|
# => ["David", "Heinemeier Hansson"]
|
||||||
|
```
|
||||||
|
|
||||||
|
This really simplifies the code that is needed to make the following example
|
||||||
|
work:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
def create_user(name)
|
||||||
|
user = User.new
|
||||||
|
user.first_name, user.last_name = name.split(" ", 2)
|
||||||
|
user.save
|
||||||
|
end
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user