2011-10-01 71 views
2

我想发送消息到,对于NO_CONTENT测试红宝石字符串对象:测试字符串没有内容

"".content? => false # same as .empty? 
" ".content? => false # same as .blank? 
"\n\t".content? => false # new feature 

特别是,如果有任何一个人能读懂有content?将通过真实的。我将猴子补丁的字符串类与正则表达式做到这一点。

"\n\t\n\n".gsub(/[\n|\t]/,'').empty? 

这让我接近,但我可能会重新发明轮子,并希望有一个更完整的解决方案。

回答

2

前检查strip它。

"\n\t".strip.empty?

+0

凉,不知道有关 – bonhoffer

1

像这样的事情?

class String 
    def content? 
    self !~ /\A\s*\z/ 
    end 
end 

"".content? #=> false 
" ".content? #=> false 
"\n\t".content? #=> false 
"foo".content? #=> true 
+0

你就不能做到'!〜而不是在括号包裹它,否定整个表达式'? – d11wtq

+0

当然,你可以,我刚刚从正则表达式开始匹配,然后在它前面插入否定词。现在修复,谢谢! –