0

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

input = ask ("Input text: ")

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

我还在此处提供了指向以下 gem 的脚本链接:

ask 函数让我可以用一行字符串来做这件事。

4

2 回答 2

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"
于 2018-02-25T14:35:43.273 回答
0

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

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


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

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

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


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

例如,假设您想问一个问题并检查输入是否为yn。您可以执行以下操作:

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

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

于 2018-03-20T07:43:46.153 回答