"abc..." irb(main):00-6ren">
gpt4 book ai didi

ruby - Rails 3 中截断的奇怪行为

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:19 25 4
gpt4 key购买 nike

我一直在尝试 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"

我期待类似 "a...""ab...""abc..." 的内容。 ..

我不明白为什么会这样。

我正在使用 Ruby 1.8.7。

最佳答案

您提供给 truncate 的长度应该包括 ...,因此 4 或更大的长度应该可以完美工作。

String#truncate 方法中似乎存在错误。看着 source code ,看起来没有任何东西可以处理小于 3 的长度。

例子:

当您提供 4 作为长度时,rails 会为 ... 减去 3,将调整后的长度保留为 1 。因此,rails 使用 1 作为“abcde”子字符串的结尾部分:

"abcde"[0...1] + '...'
# => "a..."

但是,如果您提供 1 作为长度,减去 3 后,您调整后的长度将变为 -2。将 -2 插入范围内可以得到:

"abcde"[0...-2] + '...'
# => "abc..."

关于ruby - Rails 3 中截断的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com