【问题标题】:Ruby gem - Highline and downcase?Ruby gem - Highline 和 downcase?
【发布时间】:2018-02-25 09:04:36
【问题描述】:

我已经沮丧地搜索了几个小时,但似乎无法找到如何更改 ask 函数的输入。

input = ask ("Input text: ")

如果有人可以帮助新手,那就太棒了!

我还为下面的 gem 提供了一个脚本链接 here

【问题讨论】:

  • 改变输入是什么意思?什么是高线?请添加解释,如果存在,请举个例子 - 你想要的输出是什么?
  • "ask" 类似于 "gets" 函数,但是它将 cmd 中的光标移动到 "Input text" 字符串中的文本后面。它是 Highline 的一个功能,它是我安装的一个 Ruby gem。基本上,我希望我的答案自动更改为小写,因为我使用您在字段中输入的任何内容作为进行选择的键。

标签: ruby rubygems highline


【解决方案1】:

只需在input 变量上调用downcase!(或downcase,根据您的情况)。

这样,

input = ask("Input text").downcase

或者,

input = ask("Input text")
input.downcase!
p "Downcased: #{input}"

给你一个快速的sn-p

require 'highline'

cli = HighLine.new
input = cli.ask("Input text").downcase!
p "Downcased input: #{input}"

然后执行。

$ ruby app.rb 
Input text
LoremIpsum DOlor SIt amet 
"Downcased input: loremipsum dolor sit amet"

【讨论】:

  • 我忘了谢谢你的回答!帮了大忙!
  • 我试图在字符串上调用 .downcase。像这样 - ask = “input: “.downcase。没有在刺痛周围放置括号是我出错的地方。再次感谢!
【解决方案2】:

如果您是 Ruby 新手和/或阅读源代码以了解库的工作原理,请不要担心,我已经去过那里(并且在 10 年左右的商业中,它仍然不时发生)。

根据您想做什么,marmeladze 的第一个答案可能就是您要找的。
我认为您可能正在寻找不同的东西(或者将来有人可能会从扩展的答案中受益),并希望更改 Highline 为验证而捕获的答案的大小写。


Highline 有一个#change_case 方法,可以改变答案的大小写,这可能就是您要找的。

input = ask("Do you like cupcakes?") {|q| q.case = :down}

结果将与另一个答案完全相同,但以不那么直接的方式完成它(因为您是在一个块中操纵答案)。


但是,如果您想做一些更复杂的事情并使用大小写更改作为答案验证的一部分,那么将 .downcase 添加到 ask() 块的末尾并不会减少它。

例如,假设您想问一个问题并检查输入是y 还是n。你可以这样做:

input = ask("Do you like cupcakes?") do |q|
  q.case = :down
  q.in = ["y","n"]
end

这样输入将包含yn,并接受YyNn 的输入。
您可以通过对块内的q 对象进行更多更改(例如,通过使用q.echo = false 关闭输入回显)来走得更远,并使用HighLine::Question class 提供的其他功能。

【讨论】:

  • 嗨乍得,感谢您进一步解释。 Ruby 每天对我来说肯定开始变得更清晰了 :)。我非常感谢您在理解图书馆方面的同理心。当谈到我想要实现的目标时,只需简单地将括号放在字符串周围,然后使用 .downcase 方法即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
相关资源
最近更新 更多