首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3中截断的奇怪行为

Rails 3中截断的奇怪行为
EN

Stack Overflow用户
提问于 2011-05-19 00:44:34
回答 2查看 1.1K关注 0票数 5

我一直在尝试Rails 3提供的String#truncate方法:

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 00:59:34

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

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

示例:

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

代码语言:javascript
复制
"abcde"[0...1] + '...'
# => "a..."

但是,如果提供1作为长度,则在减去3之后,调整后的长度将变为-2。将-2插入到范围中,您将获得以下结果:

代码语言:javascript
复制
"abcde"[0...-2] + '...'
# => "abc..."
票数 4
EN

Stack Overflow用户

发布于 2012-05-17 21:52:04

您可以强制传递预期的行为

代码语言:javascript
复制
:omission => ''

截断,截断

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6048140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档