【发布时间】:2011-05-07 00:47:44
【问题描述】:
Ruby 是否有内置的 some_string.starts_with("abc") 方法?
【问题讨论】:
-
顺便问一下,你问的是 Ruby 还是 Rails?
标签: ruby
Ruby 是否有内置的 some_string.starts_with("abc") 方法?
【问题讨论】:
标签: ruby
如果这是针对非 Rails 项目,我会使用 String#index:
"foobar".index("foo") == 0 # => true
【讨论】:
start_with? 方法可以简单地确认字符串的开头与给定的字符串匹配——因此最多处理 n i> 个字符,其中 n 是给定字符串的长度——而index 必须搜索整个基本字符串。在失败的情况下,starts_with? 将进行一次访问(每个字符串)和比较,而index 将遍历基本字符串的几乎全长。
它叫做String#start_with?,而不是String#startswith:在Ruby 中,布尔型方法的名称以? 结尾,方法名称中的单词用_ 分隔。不知道s 去了哪里,就个人而言,我更喜欢String#starts_with? 而不是实际的String#start_with?
【讨论】:
您的问题标题和问题正文不同。 Ruby 没有starts_with?方法。 Rails,它是一个 Ruby 框架,但是,确实,如 sepp2k 所述。请参阅他对他的答案的评论以获取其文档的链接。
你总是可以使用正则表达式:
if SomeString.match(/^abc/)
# SomeString starts with abc
^ 在正则表达式中表示“字符串的开头”
【讨论】:
?)
您可以使用String =~ Regex。它返回字符串中完整正则表达式匹配的位置。
irb> ("abc" =~ %r"abc") == 0
=> true
irb> ("aabc" =~ %r"abc") == 0
=> false
【讨论】:
// 而不是%r。