如果字符串是16个字符或更多,我正在尝试返回true,正则表达式是我正在使用的正则表达式。
"<p>#MichiganHouseWarehouseEvent</p>" == /\S{16,}/
我试图说if string is 16 chars or more without a space return true
但这会返回错误...知道我做错了什么?
答案 0 :(得分:4)
字符串不能与正则表达式相等(==
)。但它可以match一个。
如果要检查完整字符串是否超过16个字符,并且它们都不是空格(或换行符或制表符...):
"<p>#MichiganHouseWarehouseEvent</p>" =~ /\A\S{16,}\z/
#=> 0
请注意,在Ruby中,0
是真实的。它是匹配开始的索引。
使用Ruby 2.4,您可以使用match?
直接获取布尔值。
如果要检查至少有一个包含16个非空白字符的子字符串:
"0123 01234567890abcdef" =~ /\S{16}/
#=> 5
这种情况比前一种条件限制性更小:
"0123 01234567890abcdef" =~ /\A\S{16,}\z/
#=> nil
你也可以使用:
"0123 01234567890abcdef".split.any?{ |no_space| no_space.size >= 16 }
#=> true