Ruby gem - Highline和downcase?

时间:2018-02-25 09:04:36

标签: ruby rubygems highline

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

input = ask ("Input text: ")

如果有人可以帮助新手,这将是惊人的!

我还为以下宝石提供了一个脚本链接here

The ask function lets me do this with a line of string.

2 个答案:

答案 0 :(得分:1)

只需在downcase!变量上拨打downcase(或input根据您的引用)。

像这样,

input = ask("Input text").downcase

或者,

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

为您提供的快速代码段

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"

答案 1 :(得分:0)

如果您是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提供的其他功能。