在 Ruby 中使用 Get 接受用户输入
Nurudeen Ibrahim
2022年5月18日
在 Ruby 中构建命令行 (CLI) 应用程序时,一个常见的功能是接收来自用户的输入,包括用户名或是/否
响应。这就是 gets
关键字有用的地方。
本教程将展示如何构建一个非常简单的 CLI 程序,该程序允许用户输入他们的名字并使用他们输入的名字问候他们。
示例代码:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts "Hello #{name}, nice to have you here"
输出:
Hi, welcome to my app.
Enter your name to get started:
以上是我运行代码后得到的输出。此时,程序要求我输入我的名字。这就是 gets
所做的;它创建一个提示并等待用户输入。
下面是我输入我的名字为 John
并按 Enter 键后得到的完整输出。
Hi, welcome to my app.
Enter your name to get started:
John
Hello John
, nice to have you here
你一定已经注意到上面的输出中有一些奇怪的东西。为什么打招呼 Hello John, nice to have you here
在 John
之后中断?要了解实际情况,请检查变量 name
。
示例代码:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts name.inspect
puts "Hello #{name}, nice to have you here"
输出:
Hi, welcome to my app.
Enter your name to get started:
John
"John\n"
Hello John
, nice to have you here
以上是我输入 John
作为我的名字后得到的完整输出。你可以看到 name
变量显示为 John\n
。
这就是 gets
的行为方式;它会自动将\n
附加到它作为用户输入接收到的任何值上,这称为换行符,每当它出现在文本中时,这意味着文本应该在该点中断,并在新行上继续。
解决此问题的一个好方法是使用 chomp
方法,该方法删除任何尾随特殊字符,不仅是换行符 (\n
),还包括回车符 (\r
)。你可以在此处阅读更多有关 chomp
工作原理的信息。
示例代码:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets.chomp
puts "Hello #{name}, nice to have you here"
输出:
Hi, welcome to my app.
Enter your name to get started:
John
Hello John, nice to have you here