4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】一定数以上の文字列を省略して...みたいに表記する方法

Posted at

よくネット記事とかでみるやつです。

タイトルがあって、文字列の端っこが...で表記されるやつ。

んで、クリックすると続きが読めると。

Railsではこの...を作ってくれるメソッドが用意されてます。
それがtruncateメソッド。

さっそく使ってみます。

例えば、文字列が10文字多くなったら...がでてくるようにするとしましょう。

[10] pry(main)> hoge = '123456789abcdef'
=> "123456789abcdef"
[11] pry(main)> hoge.length
=> 15

いま変数hogeに文字数15の文字列を代入しました。
このhogeをtruncateしてみます。

[12] pry(main)> hoge.truncate(10)
=> "1234567..."
[13] pry(main)> hoge.truncate(10).length
=> 10

truncateのオプションには何文字までか?を入れます。
今回は、10と入れたので10文字ですね。
...が3文字としてカウントされてるので、7文字以降が...と表記されてます。

じゃあ、hogeが10文字以下でtruncateをするとどうなるか?

[14] pry(main)> hoge = '12345'
=> "12345"
[15] pry(main)> hoge.truncate(10)
=> "12345"

なにも変化しない!

nilはどうか。

[18] pry(main)> hoge.truncate(10)
NoMethodError: undefined method `truncate' for nil:NilClass
from (pry):18:in `<main>'

怒られました。

空の文字列にはどうでしょうか。

[20] pry(main)> hoge.truncate(10)
=> ""

ちなみに、truncateにオプションを何も渡さないと20文字がデフォルトだそうです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?