【发布时间】:2020-06-07 15:40:06
【问题描述】:
我正在开发一个关于 codewars 的字符串增量器项目。 基本上, 编写一个递增字符串的函数,以创建一个新字符串。
如果字符串已经以数字结尾,则该数字应加 1。 如果字符串不以数字结尾。数字 1 应附加到新字符串中。 如果数字有前导零,则应考虑位数。 foo -> foo1
foo001 ->foo002
foobar23 -> foobar24
foo099 -> foo100
我的代码是:input.gsub(/\d/,"")+input.split().map {|x| x[/\d+/].next!}.join(" ")
https://repl.it/@tanilserbes/ViolentNoteworthyDowngrade 。它适用于这个游乐场
但是它不适用于代码战。我收到此错误:
main.rb:5:in block in increment_string': undefined methodnext!'对于 nil:NilClass (NoMethodError)`
有什么想法吗?
提前致谢!
【问题讨论】:
-
我得到相同的 NoMethodError 和
input的"foo" -
另外,您可能想了解String#succ 的作用。
-
"如果数字有前导零,则应考虑位数" 那么
"foo99"如果没有前导 0,会发生什么? -
我觉得
String#succ可能对这个没有好处,因为它会将"foo"增加到"fop"和"foo9"到"fop0"...只是增加你需要做的检查次数,imo...尽管string.sub!(/(\d+)\Z/, &:next) || string << "1"应该足够好 -
你得到了“undefined methodnext!”对于零:NilClass”。 99.9% 的情况下,这意味着您的变量或类名拼写错误。请参阅“How to Ask”、“Stack Overflow question checklist”和“MCVE”及其所有链接页面。
标签: arrays ruby string increment codewarrior