mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
38 lines
1.0 KiB
Markdown
38 lines
1.0 KiB
Markdown
# 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(" ")`).
|
|
However, this method has another argument you can specify; 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
|
|
```
|