Ruby:“未定义方法”错误;如何更有效地使用gsub?

adamantly_so

因此,我正在尝试寻找一种方法来对用户输入的Donald Duck-ify语句进行处理(稍后再评价我)。

到目前为止,这是我的代码:

puts "Wanna get Donald Duck-ified?"
print "Type some text here:"
user_input = gets.chomp

if user_input.gsub!(/s/,"th").gsub!(/ce/,"th").gsub!(/ci/,"th").gsub!(/cy/,"th")
    puts "Boop - there go your s's and soft c's!"
else
    puts "Dang, you didn't have any s's or soft c's!"
end

puts "#{user_input}"

用我自己的一些输入(特别是“方圆凯撒圆”)对其进行测试后,我得到“未定义的方法'gsub!”。for nil:NilClass“作为错误。

gsub怎么样!未定义?如果代码单独运行,user_input.gsub!(/s/,"th")并且没有任何其他方法,则可以正常工作。添加第二种方法后,else代码将运行,并且仅替换“ s”。这四个和我都收到上面的错误。

是否有另一种方法可以用单个替换替换多个模式(如Ruby文档所命名)?我花了最后几个小时研究问题,但我仍然无法完全分辨出问题是什么。

Ruby的新手。鼓励和激励。提前谢谢了。

用户名

不要使用#gsub!链式。(实际上,大多数代码根本不使用#gsub!。)

[gsub!]在原位执行String#gsub的替换如果没有执行替换,则返回str或nil

切换到#gsub不会产生副作用的代码(yay!),并始终返回一个字符串(yay!)-只需将结果与原始(未修改的)字符串进行比较即可。


另外,可以使用接受哈希值的gsub形式(从Ruby 1.9.something开始)。这有一个细微的差别,尽管替换的值在这里无关紧要,但替换的值本身不会被替换。

user_input.gsub(/s|ce|ci|cy/, { "s"=>"th", "ce"=>"th", "ci"=>"th", "cy"=>"th" })
# or since all are replaced with "th" (which I just noticed =^_^=) ..
user_input.gsub(/s|ce|ci|cy/, "th")

(我仍然建议不gsub!要这样做因为我发现字符串不安全会有副作用。但是,当与上面的非链接形式一起使用时,它可以可靠地工作。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby:“未定义的方法”错误;如何更有效地使用gsub?

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

如何在Ruby中更有效地编写远程/本地服务器文件操作方法?

来自分类Dev

更有效地重写大量文本的方法?

来自分类Dev

如何更有效地找到闭环

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

如何更有效地解码RSA加密?

来自分类Dev

如何更有效地重写

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

如何更有效地呈现Mathjax内容?

来自分类Dev

如何更有效地找到闭环

来自分类Dev

如何更有效地计算滚动比

来自分类Dev

更有效地使用API

来自分类Dev

如何更有效地检查错误值

来自分类Dev

如何使用Java更有效地反转数字

来自分类Dev

如何使用for循环更有效地编写pandas命令

来自分类Dev

C#如何更有效地使用NetworkStream?

来自分类Dev

如何使用JUnit有效地测试方法

来自分类Dev

如何使用JUnit有效地测试方法

来自分类Dev

比使用ruby gsub替换字符串更有效的方法

来自分类Dev

使用更新时,ruby on rails未定义方法“有效”

来自分类Dev

我如何定义哪个函数更有效地将数组与自定义模型进行比较

来自分类Dev

如何在XCode中更有效地复制Objective-C方法名称?

来自分类Dev

如何比使用unlist方法更有效地将嵌套列表展平到一个列表中?

来自分类Dev

否则,是否更有效地进行错误检查?

来自分类Dev

作业:我在某处内存泄漏,但找不到。关于如何更有效地使用valgrind的任何提示?

来自分类Dev

如何通过使用Ansible官方模块将磁盘更有效地添加到VMware的VM主机?

来自分类Dev

如何才能更有效地编写代码,以与不同类型的JavaFX GUI组件一起使用?

Related 相关文章

  1. 1

    Ruby:“未定义的方法”错误;如何更有效地使用gsub?

  2. 2

    如何更有效地使用find命令?

  3. 3

    如何更有效地使用find命令?

  4. 4

    如何在Ruby中更有效地编写远程/本地服务器文件操作方法?

  5. 5

    更有效地重写大量文本的方法?

  6. 6

    如何更有效地找到闭环

  7. 7

    如何更有效地编写此CSS?

  8. 8

    如何更有效地解码RSA加密?

  9. 9

    如何更有效地重写

  10. 10

    如何更有效地编写此CSS?

  11. 11

    如何更有效地呈现Mathjax内容?

  12. 12

    如何更有效地找到闭环

  13. 13

    如何更有效地计算滚动比

  14. 14

    更有效地使用API

  15. 15

    如何更有效地检查错误值

  16. 16

    如何使用Java更有效地反转数字

  17. 17

    如何使用for循环更有效地编写pandas命令

  18. 18

    C#如何更有效地使用NetworkStream?

  19. 19

    如何使用JUnit有效地测试方法

  20. 20

    如何使用JUnit有效地测试方法

  21. 21

    比使用ruby gsub替换字符串更有效的方法

  22. 22

    使用更新时,ruby on rails未定义方法“有效”

  23. 23

    我如何定义哪个函数更有效地将数组与自定义模型进行比较

  24. 24

    如何在XCode中更有效地复制Objective-C方法名称?

  25. 25

    如何比使用unlist方法更有效地将嵌套列表展平到一个列表中?

  26. 26

    否则,是否更有效地进行错误检查?

  27. 27

    作业:我在某处内存泄漏,但找不到。关于如何更有效地使用valgrind的任何提示?

  28. 28

    如何通过使用Ansible官方模块将磁盘更有效地添加到VMware的VM主机?

  29. 29

    如何才能更有效地编写代码,以与不同类型的JavaFX GUI组件一起使用?

热门标签

归档