Ruby 是不是有一个 string.startswith("abc") 内置方法?
Posted
技术标签:
【中文标题】Ruby 是不是有一个 string.startswith("abc") 内置方法?【英文标题】:Does Ruby have a string.startswith("abc") built in method?Ruby 是否有一个 string.startswith("abc") 内置方法? 【发布时间】:2011-05-07 00:47:44 【问题描述】:Ruby 是否有内置的 some_string.starts_with("abc")
方法?
【问题讨论】:
相关问题:***.com/questions/4130364/… 顺便问一下,你问的是 Ruby 还是 Rails? 【参考方案1】:如果这是针对非 Rails 项目,我会使用 String#index
:
"foobar".index("foo") == 0 # => true
【讨论】:
然而,这会更加耗费性能,因为start_with?
方法可以简单地确认字符串的开头与给定的字符串匹配——因此最多处理 n i> 个字符,其中 n 是给定字符串的长度——而index
必须搜索整个基本字符串。在失败的情况下,starts_with?
将进行一次访问(每个字符串)和比较,而index
将遍历基本字符串的几乎全长。【参考方案2】:
它叫做String#start_with?
,而不是String#startswith
:在Ruby 中,布尔型方法的名称以?
结尾,方法名称中的单词用_
分隔。不知道s
去了哪里,就个人而言,我更喜欢String#starts_with?
而不是实际的String#start_with?
【讨论】:
Matz 说他更喜欢不带 s,因为它看起来像第二人称单数或第三人称复数。 String#start_with?在 ruby 1.8.7 和 1.9.0 中引入 - 对于旧版本,您可能希望使用其他答案中提到的正则表达式或索引版本之一。 在 Rails 中,你可以使用 String#starts_with? @anthropomorphic github.com/rails/rails/blob/… ;它是 String#start_with 的别名? @AndrewGrimm 唯一的问题是“字符串”是第三人称单数! (因此,'s' 不应该被删除)。【参考方案3】:您的问题标题和问题正文不同。 Ruby 没有starts_with?方法。 Rails,它是一个 Ruby 框架,但是,确实,如 sepp2k 所述。请参阅他对他的答案的评论以获取其文档的链接。
你总是可以使用正则表达式:
if SomeString.match(/^abc/)
# SomeString starts with abc
^
在正则表达式中表示“字符串的开头”
【讨论】:
我将 subject+bods 组合表示“Ruby 没有 starts_with 方法。有 rails 吗?”。 @sepp2k,但在问题标题中是?
)
字符串有 start_with 吗?自 ruby 1.9 (eigenclass.org/hiki/Changes+in+Ruby+1.9#l124)
@steenslag - ruby 1.8.7 也有 start_with? - documentation 和 1.8.7 release notes
在使用字符串文字构建正则表达式时要小心——记住要转义任何特殊字符。有一个函数,字符串文字可能是不可预测的【参考方案4】:
您可以使用String =~ Regex
。它返回字符串中完整正则表达式匹配的位置。
irb> ("abc" =~ %r"abc") == 0
=> true
irb> ("aabc" =~ %r"abc") == 0
=> false
【讨论】:
请尽可能使用//
而不是%r
。以上是关于Ruby 是不是有一个 string.startswith("abc") 内置方法?的主要内容,如果未能解决你的问题,请参考以下文章
C++ 中是不是有类似于 ruby 的 set_trace_function 的工具?