And*_*Liu 5 ruby string ruby-on-rails-3
我一直在尝试Rails 3提供的String#truncate方法:
irb(main):001:0> "abcde".truncate(1)
=> "abc..."
irb(main):002:0> "abcde".truncate(2)
=> "abcd..."
irb(main):003:0> "abcde".truncate(3)
=> "..."
irb(main):004:0> "abcde".truncate(4)
=> "a..."
irb(main):005:0> "abcde".truncate(5)
=> "abcde"
irb(main):006:0> "abcde".truncate(6)
=> "abcde"
Run Code Online (Sandbox Code Playgroud)
我期待像"a...","ab...","abc..."...
我不明白为什么这样做.
我正在使用Ruby 1.8.7.
您提供的长度truncate应包括...,因此 4 或更大的长度应该可以完美工作。
该方法似乎存在错误String#truncate。查看源代码,其中似乎没有任何内容可以处理提供的小于 3 的长度。
例子:
当您提供4长度时,rails 会减去3,...将调整后的长度保留为1。因此,rails 使用它1作为“abcde”子字符串的结尾部分:
"abcde"[0...1] + '...'
# => "a..."
Run Code Online (Sandbox Code Playgroud)
但是,如果您提供1长度,则减去3调整后的长度后将变为-2。插入-2该范围后,您会得到以下结果:
"abcde"[0...-2] + '...'
# => "abc..."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |