微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我试图使输入不区分大小写,有人可以解释如何做到这一点吗?

如何解决我试图使输入不区分大小写,有人可以解释如何做到这一点吗?

我正在用 Ruby 制作一个简单的 CLI,我让用户输入“Y”或“N”,但现在程序只有在他们输入大写时才能工作。无论情况如何,我都希望它能够正常工作。我尝试使用 "N".casecmp"Y".casecmp 但这给了我一个参数错误。有任何想法吗?我需要在环境中require一些东西吗?

也许展示我的代码会有所帮助?

 if input == "Y"
    method_a
 elsif input == "N"

添加 .casecmp?.casecmp 要么让我陷入无限循环,要么给我一个参数错误

解决方法

您可以使用字符串downcase的方法,您可以忘记大写的问题,因此您现在可以检查yn

文档:https://apidock.com/ruby/v2_5_5/String/downcase

示例:

"hEllO".downcase   #=> "hello"
,

应该与 casecmp? 一起使用而不显式改变原始字符串

String.casecmp?

如果在 Unicode 大小写后 self 和 other_string 相等则返回 true 折叠,否则为假:

given = "Hello"
expected = "hello"

ok = given.casecmp?(expected)

puts ok ? "Ok" : "Not" # => "Ok"
,

我认为在 'y' 或 'Y' 输入之间有它们自己的 object_id。

所以它们实际上是不同的对象。

所以我认为这不是关于输入,而是关于我们将根据输入做什么。

如果你试图与你的输入进行比较而不考虑它们的情况,casecmp 应该可以解决问题

a = gets.to_s

if a.casecmp('Y').zero?
 # do stuff
elsif a.casecmp('N').zero?
 # do stuff
else
 # do stuff
end

https://apidock.com/ruby/String/casecmp

'y'.casecmp('Y').zero? # true,then it is same regardless case
'Y'.casecmp('y').zero? # true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。